STILTS-PLOT3D(1)

πŸ’« stilts-plot3d β€” the old-style 3D scatter plot β€” a Stilts command, bestie πŸ’«

okay so before we even get into it: this is a deprecated command. it still works! it's still cute! but the glow-up versions are plot2cube and plot2sphere, and honestly you should be using those if you can. anyway. sit down, grab a lil snack πŸ“, we're doing 3D scatter plots.


✨ SYNOPSIS ✨

stilts plot3d [xpix=<int-value>] [ypix=<int-value>]
              [font=dialog|serif|...] [fontsize=<int-value>]
              [fontstyle=plain|bold|italic|bold-italic]
              [legend=true|false] [title=<value>]
              [omode=swing|out|cgi|discard|auto] [out=<out-file>]
              [ofmt=png|png-transp|gif|jpeg|pdf|svg|eps|eps-gzip]
              [inN=<table>] [ifmtN=<in-format>] [istreamN=true|false]
              [cmdN=<cmds>] [xdataN=<expr>] [ydataN=<expr>]
              [zdataN=<expr>] [auxdataN=<expr>] [xlo=<float-value>]
              [ylo=<float-value>] [zlo=<float-value>] [auxlo=<float-value>]
              [xhi=<float-value>] [yhi=<float-value>]
              [zhi=<float-value>] [auxhi=<float-value>]
              [xlog=true|false] [ylog=true|false] [zlog=true|false]
              [auxlog=true|false] [xflip=true|false] [yflip=true|false]
              [zflip=true|false] [auxflip=true|false] [xlabel=<value>]
              [ylabel=<value>] [zlabel=<value>] [auxlabel=<value>]
              [xerrorN=<expr>|[<lo-expr>],[<hi-expr>]]
              [yerrorN=<expr>|[<lo-expr>],[<hi-expr>]]
              [zerrorN=<expr>|[<lo-expr>],[<hi-expr>]]
              [auxshader=rainbow|pastel|...] [txtlabelN=<value>]
              [subsetNS=<expr>] [nameNS=<value>]
              [colourNS=<rrggbb>|red|blue|...]
              [shapeNS=filled_circle|open_circle|...] [sizeNS=<int-value>]
              [transparencyNS=<int-value>]
              [lineNS=DotToDot|LinearRegression] [linewidthNS=<int-value>]
              [dashNS=dot|dash|...|<a,b,...>] [hideNS=true|false]
              [errstyleNS=lines|capped_lines|...]
              [grid=true|false] [antialias=true|false]
              [sequence=<suffix>,<suffix>,...] [fog=<float-value>]
              [phi=<float-value>] [theta=<float-value>]

🌈 DESCRIPTION 🌈

sooooo this section is describing a deprecated command. it still works, fr, but like… you're advised to use the way more capable plot2cube or plot2sphere instead. i'm just the messenger πŸ’…

plot3d makes three-dimensional scatter plots, and it either throws the output onto a graphical display OR writes it out to a file in some vector or bitmapped graphics format. you have to feed it values for one or more X, Y and Z datasets, expressed as table columns, and then it generates a plot with a point for each row. it's giving "one point per row, always." ✨

there are so many options for configuring the detailed appearance of the plot (you'll see, we're about to list all of them, every single one, no skipping), but in its simplest form the invocation is actually super straightforward. for more discussion on use of the plotting commands, see SUN/256. πŸ“š


πŸ’… OPTIONS πŸ’…

  • xpix=<int-value> β€” the width of the output graphic, in pixels. that's it. that's the whole thing.
  • ypix=<int-value> β€” the height of the output graphic, in pixels. sibling of the above, no drama.
  • font=dialog|serif|... β€” picks the font used for textual annotation on the plot, which includes axes etc. at minimum you'll have these available:
    • serif
    • sansserif
    • monospaced
    • dialog
    • dialoginput

plus a whole range of system-dependent fonts, which might include:

  • dejavu_sans
  • dejavu_sans_mono
  • dejavu_serif
  • fontsize=<int-value> β€” sets the font size used for plot annotations.
  • fontstyle=plain|bold|italic|bold-italic β€” gives a style in which the font is to be applied for plot annotations. your options are literally plain, bold, italic and bold-italic. pick your fighter 🫢
  • legend=true|false β€” determines whether a legend is shown, telling you which plotting style is used for each data set. defaults to true if there's more than one set, and false otherwise. it's smart like that.
  • title=<value> β€” a one-line title to display at the top of the plot. main character energy for your chart πŸ‘‘
  • omode=swing|out|cgi|discard|auto β€” determines how the drawn plot will be output β€” see SUN/256. options are:
    • swing: the plot will be displayed in a window on the screen. this plot is "live"; it can be resized and (except for old-style plots) navigated around with mouse actions in the same way as plots in TOPCAT. iconic behaviour tbh.
    • out: the plot will be written to a file given by out, using the graphics format given by ofmt.
    • cgi: the plot will be written in a way suitable for CGI use direct from a web server. the output is in the graphics format given by ofmt, preceded by a suitable Content-type declaration.
    • discard: the plot is drawn, but discarded. there is no output. it's giving "did it even happen" πŸ’€
    • auto: behaves as swing or out mode depending on presence of out parameter.
  • out=<out-file> β€” the location of the output file. this is usually a filename to write to. and ooh, special case: if it's equal to the special value -, the output gets written to standard output. πŸŽ€
  • ofmt=png|png-transp|gif|jpeg|pdf|svg|eps|eps-gzip β€” graphics format in which the plot is written to the output file, see SUN/256. one of:
    • png: PNG
    • png-transp: PNG with transparent background
    • gif: GIF
    • jpeg: JPEG
    • pdf: Portable Document Format
    • svg: Scalable Vector Graphics
    • eps: Encapsulated PostScript
    • eps-gzip: Gzipped Encapsulated PostScript

it may also default to a sensible value depending on the filename given by out. so it can just decide, and honestly good for it.

  • inN=<table> β€” the location of the input table. it can take one of the following forms:
    • a filename.
    • a URL.
    • the special value -, meaning standard input. in this case the input format must be given explicitly using the ifmtN parameter. heads up though: not all formats can be streamed in this way. ⚠️
    • a scheme specification of the form :<scheme-name>:<scheme-args>.
    • a system command line with either a "<" character at the start, or a "|" character at the end ("<syscmd" or "syscmd|"). this executes the given pipeline and reads from its standard output. this will probably only work on unix-like systems.

in any case, compressed data in one of the supported compression formats (gzip, Unix compress or bzip2) will be decompressed transparently. magic, lowkey ✨

  • ifmtN=<in-format> β€” specifies the format of the input table as specified by parameter inN. the known formats are listed in SUN/256. you can use this flag if you already know what format your table is in. if it has the special value (auto) (which is the default), then it'll attempt to detect the format of the table automatically. warning though: this can't always be done correctly, and when it can't, the program will exit with an error explaining which formats were attempted. 😭 this parameter is ignored for scheme-specified tables.
  • istreamN=true|false β€” if set true, the input table specified by the inN parameter will be read as a stream. when you do that, you have to give the ifmtN parameter. depending on the required operations and processing mode, this may cause the read to fail β€” sometimes it's necessary to read the table more than once, and that's just how it is. it is not normally necessary to set this flag; in most cases the data will be streamed automatically if that's the best thing to do. however, it can sometimes result in less resource usage when processing large files in certain formats (such as VOTable). this parameter is ignored for scheme-specified tables.
  • cmdN=<cmds> β€” specifies processing to be performed on the table. the value of this parameter is one or more of the filter commands described in SUN/256. if you give more than one, they must be separated by semicolon characters (;). you can repeat this parameter multiple times on the same command line to build up a whole list of processing steps. the sequence of commands given this way defines the processing pipeline which is performed on the table. pipeline slay 🧚

commands may alternatively be supplied in an external file, by using the indirection character @. so a value of "@filename" causes the file filename to be read for a list of filter commands to execute. commands in the file may be separated by newline characters and/or semicolons, and lines which are blank or which start with a # character are ignored. a backslash character '\fR' at the end of a line joins it with the following line.

  • xdataN=<expr> β€” gives a column name or expression for the x axis data for table N. the expression is a numeric algebraic expression based on column names as described in SUN/256.
  • ydataN=<expr> β€” gives a column name or expression for the y axis data for table N. the expression is a numeric algebraic expression based on column names as described in SUN/256.
  • zdataN=<expr> β€” gives a column name or expression for the z axis data for table N. the expression is a numeric algebraic expression based on column names as described in SUN/256.
  • auxdataN=<expr> β€” gives a column name or expression for the aux axis data for table N. the expression is a numeric algebraic expression based on column names as described in SUN/256.
  • xlo=<float-value> β€” the lower limit for the plotted x axis. if you don't set it, a value will be chosen which is low enough to accommodate all the data. it's got you 🫢
  • ylo=<float-value> β€” the lower limit for the plotted y axis. if you don't set it, a value will be chosen which is low enough to accommodate all the data.
  • zlo=<float-value> β€” the lower limit for the plotted z axis. if you don't set it, a value will be chosen which is low enough to accommodate all the data.
  • auxlo=<float-value> β€” the lower limit for the plotted aux axis. if you don't set it, a value will be chosen which is low enough to accommodate all the data.
  • xhi=<float-value> β€” the upper limit for the plotted x axis. if you don't set it, a value will be chosen which is high enough to accommodate all the data.
  • yhi=<float-value> β€” the upper limit for the plotted y axis. if you don't set it, a value will be chosen which is high enough to accommodate all the data.
  • zhi=<float-value> β€” the upper limit for the plotted z axis. if you don't set it, a value will be chosen which is high enough to accommodate all the data.

to be continued… there's so much more and we are NOT done, bestie πŸ’–

  • auxhi=<float-value> β€” the upper limit for the plotted aux axis πŸ’œ. If you don't set it, STILTS will just pick a value that's high enough to fit all your data, no stress.
  • xlog=true|false β€” scale on the x axis. false is the default and it's linear; flip it to true and it goes logarithmic ✨.
  • ylog=true|false β€” same deal for the y axis: false (the default) is linear, true is logarithmic.
  • zlog=true|false β€” and again for z πŸ’…: false by default β†’ linear, true β†’ logarithmic.
  • auxlog=true|false β€” aux axis this time πŸ¦‹: false by default β†’ linear, true β†’ logarithmic.
  • xflip=true|false β€” set it true and the x axis scale grows in the opposite sense from usual (so like, right to left instead of left to right) πŸ”„.
  • yflip=true|false β€” set it true and the y axis scale grows in the opposite sense from usual (right to left rather than left to right, etc.) πŸ”„.
  • zflip=true|false β€” set it true and the z axis scale grows in the opposite sense from usual (right to left rather than left to right, etc.) πŸ”„.
  • auxflip=true|false β€” set it true and the aux axis scale grows in the opposite sense from usual (right to left rather than left to right, etc.) πŸ”„.
  • xlabel=<value> β€” the label used to annotate axis x 🏷️. If you don't supply a value for this parameter, a default based on the plotted data gets used instead.
  • ylabel=<value> β€” the label used to annotate axis y 🏷️. No value supplied? Then a default based on the plotted data steps in.
  • zlabel=<value> β€” the label used to annotate axis z 🏷️. Same story: skip it and a data-based default takes over.
  • auxlabel=<value> β€” the label used to annotate axis aux 🏷️. Skip it and, yep, a default derived from the plotted data is used.
  • xerrorN=<expr>|[<lo-expr>],[<hi-expr>] β€” gives expressions for the errors on X coordinates for table N 😀. These forms are permitted:
    • <expr>: symmetric error value
    • <lo-expr>,<hi-expr>: distinct lower and upper error values
    • <lo-expr>,: lower error value only
    • ,<hi-expr>: upper error value only
    • null: no errors

In every one of those cases, the expression is a numeric algebraic expression based on column names as described in SUN/256 πŸ“–.

  • yerrorN=<expr>|[<lo-expr>],[<hi-expr>] β€” gives expressions for the errors on Y coordinates for table N 😀. These forms are permitted:
    • <expr>: symmetric error value
    • <lo-expr>,<hi-expr>: distinct lower and upper error values
    • <lo-expr>,: lower error value only
    • ,<hi-expr>: upper error value only
    • null: no errors

Here too, the expression in each case is a numeric algebraic expression based on column names as described in SUN/256 πŸ“–.

  • zerrorN=<expr>|[<lo-expr>],[<hi-expr>] β€” gives expressions for the errors on Z coordinates for table N 😀. These forms are permitted:
    • <expr>: symmetric error value
    • <lo-expr>,<hi-expr>: distinct lower and upper error values
    • <lo-expr>,: lower error value only
    • ,<hi-expr>: upper error value only
    • null: no errors

And again, the expression in each case is a numeric algebraic expression based on column names as described in SUN/256 πŸ“–.

  • auxshader=rainbow|pastel|... β€” decides how data from auxiliary axes gets displayed 🌈. Basically it's always some kind of colour ramp. The available colour fixing options are:
    • rainbow
    • pastel
    • standard
    • heat
    • colour
    • hue
    • greyscale
    • red-blue

and the available colour modifying options are:

  • hsv_h
  • hsv_s
  • hsv_v
  • intensity
  • rgb_red
  • rgb_green
  • rgb_blue
  • yuv_y
  • yuv_u
  • yuv_v
  • transparency
  • txtlabelN=<value> β€” an expression that labels each plotted point 🏷️. If you give one, the text (or number) that comes out of evaluating the expression gets written near every point that's plotted.
  • subsetNS=<expr> β€” the selection criterion for the subset labelled "NS" 🎯. It's a boolean expression, and it can be the name of a boolean-valued column or literally any other boolean-valued expression. Rows where it evaluates true get included in the subset; rows where it evaluates false do not.
  • nameNS=<value> β€” a name to use for a subset with the symbolic label NS πŸ’–. This name is what shows up in the legend, if a legend is being displayed.
  • colourNS=<rrggbb>|red|blue|... β€” defines the colour of the plotted markers 🎨. The value can be a 6-digit hexadecimal number giving red, green and blue intensities, e.g. "ff00ff" for magenta. Or it can be the name of one of the pre-defined colours β€” currently red, blue, green, grey, magenta, cyan, orange, pink, yellow, black and white.

Also, for most purposes, either the American or the British spelling is accepted for this parameter name πŸ‘‘.

  • shapeNS=filled_circle|open_circle|... β€” defines the shapes for the markers plotted in data set NS ⭐. These shapes are available:
    • filled_circle
    • open_circle
    • cross
    • x
    • open_square
    • open_diamond
    • open_triangle_up
    • open_triangle_down
    • filled_square
    • filled_diamond
    • filled_triangle_up
    • filled_triangle_down
  • sizeNS=<int-value> β€” the marker size in pixels for markers plotted in data set NS πŸ“. If the value is negative, STILTS will attempt to use a suitable size depending on how many points there are to be plotted.
  • transparencyNS=<int-value> β€” controls the transparency of plotted markers for data set NS πŸ«₯. A value of <n> means opacity is only achieved (i.e. the background is only blotted out) once <n> pixels of this colour have been plotted on top of each other.

Minimum value is 1, which means opaque markers.

  • lineNS=DotToDot|LinearRegression β€” determines what line, if any, gets plotted alongside the data points πŸ“ˆ. The options are:
    • null: no line is plotted.
    • DotToDot: each point is joined to the next one in sequence by a straight line.
    • LinearRegression: a linear regression line is plotted based on all the points which are visible in the plot. Heads up though β€” the regression coefficients take no account of points out of the visible range ⚠️.
  • linewidthNS=<int-value> β€” sets the line width in pixels for any lines drawn in data set NS πŸ“.

This only has an effect if the lineNS parameter is set to draw lines.

  • dashNS=dot|dash|...|<a,b,...> β€” defines the dash style for any lines drawn in data set NS πŸ–οΈ. To generate a dashed line the value can be one of the named dash types:
    • dot
    • dash
    • longdash
    • dotdash

or it can be a comma-separated string of on/off length values, like "4,2,8,2". A null value means a solid line.

Only has an effect if the lineNS parameter is set to draw lines.

  • hideNS=true|false β€” says whether the actual markers plotted for each point should be hidden πŸ™ˆ. Normally this is false, but you might want to set it true if the point positions are being revealed some other way β€” for instance via error markers or lines drawn between them.
  • errstyleNS=lines|capped_lines|... β€” defines how error bars (or ellipses, or...) get represented for data set NS when errors are being displayed 😭. Available options:
    • none
    • lines
    • capped_lines
    • caps
    • arrows
    • cuboid
    • ellipse
    • crosshair_ellipse
    • rectangle
    • crosshair_rectangle
    • filled_ellipse
    • filled_rectangle
  • grid=true|false β€” true and grid lines are drawn on the plot; false and they're simply not there ✨.
  • antialias=true|false β€” controls whether lines get drawn using antialiasing, where applicable 🧚. If lines are going to a bitmapped-type graphics output format, setting this to true smooths them out by using gradations of colour for diagonal lines, while false just sets each pixel in the line to on or off. For vector-type graphics output formats, or in cases where no diagonal lines are drawn, the setting of this parameter has no effect. Setting it true may slow the plot down slightly.
  • sequence=<suffix>,<suffix>,... β€” lets you control the sequence in which different datasets and subsets get plotted πŸ‘‘. This affects which symbols are plotted on top of β€” and therefore potentially obscure β€” which others. The value of this parameter is a comma-separated list of the "NS" suffixes which appear on the parameters that apply to subsets. The sets you name will be plotted in order, so the first-named one is at the bottom (most likely to be obscured). Note that if this parameter is supplied, then only those sets which are named will be plotted, so this parameter can also be used to restrict which plots appear (though it may not be the most efficient way of doing that πŸ’€). If no explicit value is supplied for this parameter, sets get plotted in some sequence decided by STILTS (probably alphabetic by suffix).
  • fog=<float-value> β€” okay so this one sets the level of fogging, which is literally just a visual indication of depth. Objects plotted further away from the viewer appear more washed-out by a white fog. The default value gives a bit of fogging; increase it to make the fog thicker, or set it to zero if no fogging is required. lowkey atmospheric 🌫️
  • phi=<float-value> β€” angle in degrees through which the 3D plot is rotated around the Z axis prior to drawing. spin it, bestie πŸŒ€
  • theta=<float-value> β€” angle in degrees through which the 3D plot is rotated towards the viewer (i.e. about the horizontal axis of the viewing plane) prior to drawing. tilt it like you mean it ✨

πŸ’– SEE ALSO πŸ’–

If the package stilts-doc is installed, the full documentation SUN/256 is available in HTML format: file:///usr/share/doc/stilts/sun256/index.html


✨ VERSION ✨

STILTS version 3.5.4-debian

This is the Debian version of Stilts, which lack the support of some file formats and network protocols. For differences see file:///usr/share/doc/stilts/README.Debian

no cap, that's the tea πŸ«–


πŸ‘‘ AUTHOR πŸ‘‘

Mark Taylor (Bristol University)


That's the whole page, bestie πŸ’… signing off from STILTS-PLOT3D(1), Mar 2017 edition. Stay iconic, stay Unix-y πŸ¦‹πŸ’–

πŸ“¦ where this page comes from