The usage of plot2cube
is
stilts <stilts-flags> plot2cube xpix=<int-value> ypix=<int-value> insets=<top>,<left>,<bottom>,<right> omode=swing|out|cgi|discard|auto storage=simple|memory|disk|policy|cache|basic-cache|persistent|parallel seq=<suffix>[,...] legend=true|false|null legborder=true|false legopaque=true|false legseq=<suffix>[,...] legpos=<xfrac,yfrac> title=<value> auxmap=<map-name>|<color>-<color>[-<color>...] auxclip=<lo>,<hi> auxflip=true|false auxquant=<number> auxfunc=log|linear|histogram|histolog|sqrt|square|acos|cos auxmin=<number> auxmax=<number> auxlabel=<text> auxcrowd=<factor> auxwidth=<pixels> auxvisible=true|false|null forcebitmap=true|false compositor=0..1 animate=<table> afmt=<in-format> astream=true|false acmd=<cmds> parallel=<int-value> xlog=true|false ylog=true|false zlog=true|false xflip=true|false yflip=true|false zflip=true|false isometric=true|false xlabel=<text> ylabel=<text> zlabel=<text> xcrowd=<number> ycrowd=<number> zcrowd=<number> labelangle=horizontal|angled|adaptive frame=true|false minor=true|false gridaa=true|false texttype=plain|antialias|latex fontsize=<int-value> fontstyle=standard|serif|mono fontweight=plain|bold|italic|bold_italic xmin=<number> xmax=<number> xsub=<lo>,<hi> ymin=<number> ymax=<number> ysub=<lo>,<hi> zmin=<number> zmax=<number> zsub=<lo>,<hi> phi=<degrees> theta=<degrees> psi=<degrees> zoom=<factor> xoff=<pixels> yoff=<pixels> zoomaxes=[[x][y][z]] zoomfactor=<number> leglabelN=<text> layerN=<layer-type> <layerN-specific-params> geomN=components|vector|polarIf you don't have the
stilts
script installed,
write "java -jar stilts.jar
" instead of
"stilts
" - see Section 3.
The available <stilts-flags>
are listed
in Section 2.1.
For programmatic invocation,
the Task class for this
command is uk.ac.starlink.ttools.plot2.task.CubePlot2Task
.
Parameter values are assigned on the command line as explained in Section 2.3. They are as follows:
acmd = <cmds>
(ProcessingStep[])
animate
,
before any other processing has taken place.
The value of this parameter is one or more of the filter
commands described in Section 6.1.
If more than one is given, they must be separated by
semicolon characters (";").
This parameter can be repeated multiple times on the same
command line to build up a list of processing steps.
The sequence of commands given in this way
defines the processing pipeline which is performed on the table.
Commands may alternatively be supplied in an external file,
by using the indirection character '@
'.
Thus a value of "@filename
"
causes the file filename
to be read for a list
of filter commands to execute. The 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 '\
' at the end of a line
joins it with the following line.
afmt = <in-format>
(String)
animate
.
The known formats are listed in Section 5.1.1.
This flag can be used if you know what format your
table is in.
If it has the special value
(auto)
(the default),
then an attempt will be
made to detect the format of the table automatically.
This cannot always be done correctly however, in which case
the program will exit with an error explaining which
formats were attempted.
This parameter is ignored for scheme-specified tables.
[Default: (auto)
]
animate = <table>
(StarTable)
The location of the animation control table. This may take one of the following forms:
-
",
meaning standard input.
In this case the input format must be given explicitly
using the afmt
parameter.
Note that not all formats can be streamed in this way.:<scheme-name>:<scheme-args>
.<
" 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.astream = true|false
(Boolean)
animate
parameter
will be read as a stream.
It is necessary to give the
afmt
parameter
in this case.
Depending on the required operations and processing mode,
this may cause the read to fail (sometimes it is necessary
to read the table more than once).
It is not normally necessary to set this flag;
in most cases the data will be streamed automatically
if that is 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.
[Default: false
]
auxclip = <lo>,<hi>
(Subrange)
If the full range 0,1
is used,
the whole range of colours specified by the selected
shader will be used.
But if for instance a value of 0,0.5
is given,
only those colours at the left hand end of the ramp
will be seen.
If the null (default) value is chosen,
a default clip will be used.
This generally covers most or all of the range 0-1
but for colour maps which fade to white,
a small proportion of the lower end may be excluded,
to ensure that all the colours are visually distinguishable
from a white background.
This default is usually a good idea if the colour map
is being used with something like a scatter plot,
where markers are plotted against a white background.
However, for something like a density map when the whole
plotting area is tiled with colours from the map,
it may be better to supply the whole range
0,1
explicitly.
auxcrowd = <factor>
(Double)
[Default: 1.0
]
auxflip = true|false
(Boolean)
[Default: false
]
auxfunc = log|linear|histogram|histolog|sqrt|square|acos|cos
(Scaling)
The available options are:
log
: Logarithmic scalinglinear
: Linear scalinghistogram
: Scaling follows data distribution, with linear axishistolog
: Scaling follows data distribution, with logarithmic axissqrt
: Square root scalingsquare
: Square scalingacos
: Arccos Scalingcos
: Cos ScalingFor all these options,
the full range of data values is used,
and displayed on the colour bar
if applicable.
The Linear
,
Log
,
Square
and
Sqrt
options
just apply the named function to the full data range.
The histogram options on the other hand use a scaling function
that corresponds to the actual distribution of the data, so that
there are about the same number of points (or pixels, or whatever
is being scaled) of each colour.
The histogram options are somewhat more expensive,
but can be a good choice if you are exploring data whose
distribution is unknown or not well-behaved over
its min-max range.
The Histogram
and
HistoLog
options both
assign the colours in the same way, but they display the colour
ramp with linear or logarithmic annotation respectively;
the HistoLog
option also ignores
non-positive values.
[Default: linear
]
auxlabel = <text>
(String)
auxmap = <map-name>|<color>-<color>[-<color>...]
(Shader)
A mixed bag of colour ramps are available
as listed in Section 8.7:
inferno
,
magma
,
plasma
,
viridis
,
cividis
,
cubehelix
,
sron
,
rainbow
,
rainbow2
,
rainbow3
,
pastel
,
cosmic
,
ember
,
gothic
,
rainforest
,
voltage
,
bubblegum
,
gem
,
chroma
,
sunset
,
neon
,
tropical
,
accent
,
gnuplot
,
gnuplot2
,
specxby
,
set1
,
paired
,
hotcold
,
guppy
,
iceburn
,
redshift
,
pride
,
rdbu
,
piyg
,
brbg
,
cyan-magenta
,
red-blue
,
brg
,
heat
,
cold
,
light
,
greyscale
,
colour
,
standard
,
bugn
,
bupu
,
orrd
,
pubu
,
purd
,
painbow
,
huecl
,
infinity
,
hue
,
intensity
,
rgb_red
,
rgb_green
,
rgb_blue
,
hsv_h
,
hsv_s
,
hsv_v
,
yuv_y
,
yuv_u
,
yuv_v
,
scale_hsv_s
,
scale_hsv_v
,
scale_yuv_y
,
mask
,
blacker
,
whiter
,
transparency
.
Note:
many of these, including rainbow-like ones,
are frowned upon by the visualisation community.
You can also construct your own custom colour map
by giving a sequence of colour names separated by
minus sign ("-
") characters.
In this case the ramp is a linear interpolation
between each pair of colours named,
using the same syntax as when specifying
a colour value.
So for instance
"yellow-hotpink-#0000ff
"
would shade from yellow via hot pink to blue.
[Default: inferno
]
auxmax = <number>
(Double)
auxmin = <number>
(Double)
auxquant = <number>
(Double)
If left blank, the colour map is nominally continuous (though in practice it may be quantised to a medium-sized number like 256).
auxvisible = true|false|null
(Boolean)
If not supplied (the default), the aux axis will be visible when aux shading is used in any of the plotted layers.
auxwidth = <pixels>
(Integer)
[Default: 15
]
compositor = 0..1
(Compositor)
Currently, this parameter takes a "boost" value in the range 0..1. If the value is zero, saturation semantics are used: RGB colours are added in proporition to their associated alpha value until the total alpha is saturated (reaches 1), after which additional pixels have no further effect. For larger boost values, the effect is similar, but any non-zero alpha in the output is boosted to the given minimum value. The effect of this is that even very slightly populated pixels can be visually distinguished from unpopulated ones which may not be the case for saturation composition.
[Default: 0.05
]
fontsize = <int-value>
(Integer)
[Default: 12
]
fontstyle = standard|serif|mono
(FontType)
The available options are:
standard
serif
mono
[Default: standard
]
fontweight = plain|bold|italic|bold_italic
(FontWeight)
The available options are:
plain
bold
italic
bold_italic
[Default: plain
]
forcebitmap = true|false
(Boolean)
shadingN=auto
or shadingN=density
)
it will have no effect, since this kind of rendering
happens in any case.
When writing to vector graphics formats (PDF and PostScript), setting it true will force the data contents to be bitmapped. This may make the output less beautiful (round markers will no longer be perfectly round), but it may result in a much smaller file if there are very many data points.
When writing to bitmapped output formats (PNG, GIF, JPEG, ...), it fixes shapes to be the same as seen on the screen rather than be rendered at the mercy of the graphics system, which sometimes introduces small distortions.
[Default: false
]
frame = true|false
(Boolean)
[Default: true
]
geomN = components|vector|polar
(DataGeom)
N
.
This determines what parameters must be supplied
to specify coordinate data for that layer.
Options, with the (suffixed) coordinate parameters they require, are:
components
: xN
(X coordinate), yN
(Y coordinate), zN
(Z coordinate)vector
: xyzN
(3-element Cartesian component array)polar
: lonN
(Longitude in decimal degrees), latN
(Latitude in decimal degrees), rN
(Radial distance)[Default: components
]
gridaa = true|false
(Boolean)
[Default: false
]
insets = <top>,<left>,<bottom>,<right>
(Padding)
The size and position of the actual plotting area
is determined by this parameter along with
xpix
and
ypix
.
The value of this parameter is 4 comma separated integers:
<top>,<left>,<bottom>,<right>
.
Any or all of these values may be left blank,
in which case the corresponding margin will be calculated
automatically according to how much space is required.
isometric = true|false
(Boolean)
[Default: false
]
labelangle = horizontal|angled|adaptive
(OrientationPolicy)
The available options are:
horizontal
: axis labels are horizontalangled
: axis labels are angledadaptive
: axis labels are horizontal if possible, but angled if necessary to fit more in[Default: adaptive
]
layerN = <layer-type> <layerN-specific-params>
(LayerType)
layer<N>
where the suffix "<N>
"
is a label identifying the layer
and is appended to all the parameter names
which configure that layer.
Suffixes may be any string, including the empty string.
This parameter may take one of the following values, described in more detail in Section 8.3:
Each of these layer types comes with a list of type-specific parameters to define the details of that layer, including some or all of the following groups:
inN
,
icmdN
)xN
,
yN
)shadingN
,
colorN
)Every parameter notionally carries the same suffix
N
.
However, if the suffix is not present,
the application will try looking for a parameter with the
same name with no suffix instead.
In this way, if several layers have the same value for a given
parameter (for instance input table),
you can supply it using one unsuffixed parameter
to save having to supply several parameters with the same
value but different suffixes.
legborder = true|false
(Boolean)
[Default: true
]
legend = true|false|null
(Boolean)
leglabelN = <text>
(String)
If no value is supplied (the default), the suffix itself is used as the label.
legopaque = true|false
(Boolean)
[Default: true
]
legpos = <xfrac,yfrac>
(double[])
0.5,0.5
" will put the legend
right in the middle of the plot.
If no value is supplied, the legend will appear outside
the plot boundary.
legseq = <suffix>[,...]
(String[])
leglabelN
parameter).
If multiple layers have the same label,
they will contribute to the same entry in the legend,
with style icons plotted over each other.
The value of this parameter is a comma-separated sequence
of layer suffixes,
which determines the order in which the legend entries appear.
Layers with suffixes missing from this list
do not show up in the legend at all.
If no value is supplied (the default),
the sequence is the same as the layer plotting sequence
(see seq
).
minor = true|false
(Boolean)
[Default: true
]
omode = swing|out|cgi|discard|auto
(PaintMode)
swing
:
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.out
:
Plot will be written to a file given by out
using the graphics format given by ofmt
.cgi
:
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
:
Plot is drawn, but discarded. There is no output.auto
:
Behaves as swing
or out
mode depending on presence of out
parameter[Default: auto
]
parallel = <int-value>
(Integer)
animate
parameter is supplied.
The default value is the number of processors apparently
available to the JVM.
[Default: 20
]
phi = <degrees>
(Double)
[Default: 30
]
psi = <degrees>
(Double)
[Default: 0
]
seq = <suffix>[,...]
(String[])
When specifying a plot, multiple layers may be specified,
each introduced by a parameter
layer<N>
,
where <N>
is a different (arbitrary)
suffix labelling the layer,
and is appended to all the parameters
specific to defining that layer.
By default the layers are drawn on the plot in the order
in which the layer*
parameters
appear on the command line.
However if this parameter is specified, each comma-separated
element is interpreted as a layer suffix,
giving the ordered list of layers to plot.
Every element of the list must be a suffix with a corresponding
layer
parameter,
but missing or repeated elements are allowed.
storage = simple|memory|disk|policy|cache|basic-cache|persistent|parallel
(DataStoreFactory)
The options are:
simple
:
no caching, data read directly from input table
memory
:
cached to memory; OutOfMemoryError possible
for very large plots
disk
:
cached to disk
policy
:
cached using application-wide default storage policy,
which is usually adaptive (memory/disk hybrid)
persistent
:
cached to persistent files on disk,
in the system temporary directory
(defined by system property java.io.tmpdir
).
If this is used, plot data will be stored on disk in a way
that means they can be re-used between STILTS invocations,
so data preparation can be avoided on subsequent runs.
Note however it can leave potentially large files
in your temporary directory.
cache
:
synonym for memory
(backward compatibility)
basic-cache
:
dumber version of memory
(no optimisation for constant-valued columns)
parallel
:
experimental version of memory-based cache that reads
into the cache in parallel for large files.
This will make the plot faster to prepare,
but interaction is a bit slower and sequence-dependent
attributes of the plot may not come out right.
This experimental option may be withdrawn or modified
in future releases.
The default value is
memory
if a live plot is being generated
(omode=swing
),
since in that case the plot needs to be redrawn every time
the user performs plot navigation actions or resizes the window,
or if animations are being produced.
Otherwise (e.g. output to a graphics file) the default is
simple
.
[Default: simple
]
texttype = plain|antialias|latex
(TextSyntax)
Plain
and
Antialias
both take the text at face value,
but Antialias
smooths the characters.
LaTeX
interprets the text as LaTeX source code
and typesets it accordingly.
When not using LaTeX, antialiased text usually looks nicer, but can be perceptibly slower to plot. At time of writing, on MacOS antialiased text seems to be required to stop the writing coming out upside-down for non-horizontal text (MacOS java bug).
[Default: plain
]
theta = <degrees>
(Double)
[Default: -15
]
title = <value>
(String)
xcrowd = <number>
(Double)
[Default: 1
]
xflip = true|false
(Boolean)
[Default: false
]
xlabel = <text>
(String)
[Default: X
]
xlog = true|false
(Boolean)
[Default: false
]
xmax = <number>
(Double)
xmin = <number>
(Double)
xoff = <pixels>
(Double)
[Default: 0
]
xpix = <int-value>
(Integer)
insets
.
[Default: 500
]
xsub = <lo>,<hi>
(Subrange)
The default value "0,1
" therefore has
no effect.
The range could be restricted to its lower half
with the value 0,0.5
.
[Default: 0,1
]
ycrowd = <number>
(Double)
[Default: 1
]
yflip = true|false
(Boolean)
[Default: false
]
ylabel = <text>
(String)
[Default: Y
]
ylog = true|false
(Boolean)
[Default: false
]
ymax = <number>
(Double)
ymin = <number>
(Double)
yoff = <pixels>
(Double)
[Default: 0
]
ypix = <int-value>
(Integer)
insets
.
[Default: 400
]
ysub = <lo>,<hi>
(Subrange)
The default value "0,1
" therefore has
no effect.
The range could be restricted to its lower half
with the value 0,0.5
.
[Default: 0,1
]
zcrowd = <number>
(Double)
[Default: 1
]
zflip = true|false
(Boolean)
[Default: false
]
zlabel = <text>
(String)
[Default: Z
]
zlog = true|false
(Boolean)
[Default: false
]
zmax = <number>
(Double)
zmin = <number>
(Double)
zoom = <factor>
(Double)
[Default: 1
]
zoomaxes = [[x][y][z]]
(boolean[])
If no value is supplied (the default), the mouse wheel zooms around the center of the cube, and right-button (or CTRL-) drag zooms in the two dimensions most closely aligned with the plane of the screen, with the reference position set by the initial position of the mouse.
If this value is set
(legal values are
x
, y
, z
,
xy
, yz
, xz
and xyz
)
then all zoom operations are around the cube center
and affect the axes named.
zoomfactor = <number>
(Double)
[Default: 1.2
]
zsub = <lo>,<hi>
(Subrange)
The default value "0,1
" therefore has
no effect.
The range could be restricted to its lower half
with the value 0,0.5
.
[Default: 0,1
]