CTIOGA2(1)

πŸ’– CTIOGA2(1) β€” Command-line interface for Tioga πŸ’–

okay bestie, sit down, hydrate, and let me tell you about ctioga2, because this little manual page is giving main character energy and you're about to be obsessed ✨


🌸 NAME 🌸

ctioga2 β€” a command-line front-end for the Tioga plotting library


πŸŽ€ SYNOPSIS πŸŽ€

ctioga2 arguments ...

πŸ¦‹ DESCRIPTION πŸ¦‹

So like, ctioga2 is a command-line front-end to the wonderful Tioga plotting library. No cap. Its whole vibe is plotting quickly β€” both data files and mathematical functions β€” while still letting you have a high level of control over the details if you're feeling extra πŸ’…

The big glow-up compared to the old ctioga is that now you can use command files with ctioga2: every single command-line option corresponds to a command, whose name is written. Just give the command the same arguments as you'd give to the command-line option. To read a command file, feed it to the -f command-line option. iykyk 🫢


🌈 EXAMPLES 🌈

Here are a few examples, both from the command-line and using the corresponding files.

  • ctioga2 File.dat β€” Produces a file Plot.pdf showing the second column of File.dat as a function of the first.

The corresponding command file would be:

#!/usr/bin/env ctioga2 -f
plot(File.dat)

✨ OPTIONS ✨

πŸ“ Plots

Plots

  • --plot DATASET β€” Use the current backend to load the given datasets onto the data stack and plot them. It is literally a combo of the load and the plot-last commands; you might wanna peek at their documentation for the full tea.

Optional arguments: as bypass-transforms class clipped color color-map contour-conrec contour-minor-number contour-minor-scale contour-minor-style contour-number depth error-bar-color error-bar-line-width fill fill-color fill-pattern fill-transparency id ignore_hooks legend line-cap line-style line-width marker marker-angle marker-color marker-color-map marker-fill-color marker-fill-color-map marker-line-color marker-line-color-map marker-line-width marker-min-scale marker-scale name path-style region-side split-on-nan where xaxis yaxis zaxis

Corresponding command: plot(dataset,option=...)

  • -p, --plot-last β€” Plots the last dataset pushed onto the data stack (or the one specified with the which option), with the current style. All aspects of the curve style (colors, markers, line styles...) can be overridden through the use of options. So yes, you can absolutely switch up the fit at the last second πŸ’…

Optional arguments: class clipped color color-map contour-conrec contour-minor-number contour-minor-scale contour-minor-style contour-number depth error-bar-color error-bar-line-width fill fill-color fill-pattern fill-transparency id legend line-cap line-style line-width marker marker-angle marker-color marker-color-map marker-fill-color marker-fill-color-map marker-line-color marker-line-color-map marker-line-width marker-min-scale marker-scale path-style region-side split-on-nan which xaxis yaxis zaxis

Corresponding command: plot-last(,option=...)

🧚 Curves styles

Set stylistic details of curves or other object drawn from data β€” this is where you make your plot serve πŸ‘‘

  • --[no-]clipped β€” Sets the clipped for subsequent curves, until cancelled with auto as argument.

Corresponding command: clipped(boolean-or-auto)

  • -c, --color COLOR-OR-FALSE-OR-AUTO β€” Sets the line color for subsequent curves, until cancelled with auto as argument.

Corresponding command: color(color-or-false-or-auto)

  • --color-map COLORMAP-OR-AUTO β€” Sets the color map for the subsequent curves, until cancelled by an auto argument.

Color maps are used for 3D plots, ie under the effet of contour, xyz-map and xy-parametric.

Corresponding command: color-map(colormap-or-auto)

  • --color-set COLOR-OR-FALSE-SET β€” Chooses a set for the line color of subsequent curves. Also sets color to auto, so that the set takes effect immediately.

Corresponding command: color-set(color-or-false-set)

  • --[no-]contour-conrec β€” If on, the subsequent curves will use the CONREC algorithm for contouring. In the opposite case, the contouring algorithm of Gri is used.

Only useful when contour is in effect.

Corresponding command: contour-conrec(boolean-or-auto)

  • --contour-minor-number INTEGER-OR-AUTO β€” Sets the number of minor level lines between major ones (approx) for subsequent curves, until cancelled with auto as argument.

Corresponding command: contour-minor-number(integer-or-auto)

  • --contour-minor-scale FLOAT-OR-AUTO β€” Sets the relative scale of minor level lines for subsequent curves, until cancelled with auto as argument.

Corresponding command: contour-minor-scale(float-or-auto)

  • --contour-minor-style LINE-STYLE-OR-AUTO β€” Sets the minor ticks line style for subsequent curves, until cancelled with auto as argument.

Corresponding command: contour-minor-style(line-style-or-auto)

  • --contour-number INTEGER-OR-AUTO β€” Sets the overall number of level lines for subsequent curves, until cancelled with auto as argument.

Corresponding command: contour-number(integer-or-auto)

  • --depth INTEGER-OR-AUTO β€” Sets the depth for subsequent curves, until cancelled with auto as argument.

Corresponding command: depth(integer-or-auto)

  • --error-bar-color COLOR-OR-FALSE-OR-AUTO β€” Sets the error bar color for subsequent curves, until cancelled with auto as argument.

Corresponding command: error-bar-color(color-or-false-or-auto)

  • --error-bar-color-set COLOR-OR-FALSE-SET β€” Chooses a set for the error bar color of subsequent curves. Also sets error-bar-color to auto, so that the set takes effect immediately.

Corresponding command: error-bar-color-set(color-or-false-set)

  • --error-bar-line-width FLOAT-OR-AUTO β€” Sets the error bar line width for subsequent curves, until cancelled with auto as argument.

Corresponding command: error-bar-line-width(float-or-auto)

  • --error-bar-line-width-set FLOAT-SET β€” Chooses a set for the error bar line width of subsequent curves. Also sets error-bar-line-width to auto, so that the set takes effect immediately.

Corresponding command: error-bar-line-width-set(float-set)

  • --fill FILL-UNTIL-OR-AUTO β€” Sets the Fill until for subsequent curves, until cancelled with auto as argument.

Corresponding command: fill(fill-until-or-auto)

  • --fill-color COLOR-OR-AUTO β€” Sets the fill color for subsequent curves, until cancelled with auto as argument.

Corresponding command: fill-color(color-or-auto)

  • --fill-color-set COLOR-SET β€” Chooses a set for the fill color of subsequent curves. Also sets fill-color to auto, so that the set takes effect immediately.

Corresponding command: fill-color-set(color-set)

  • --fill-pattern FILL-PATTERN-OR-AUTO β€” Sets the fill pattern for subsequent curves, until cancelled with auto as argument.

Corresponding command: fill-pattern(fill-pattern-or-auto)

  • --fill-set FILL-UNTIL-SET β€” Chooses a set for the Fill until of subsequent curves. Also sets fill to auto, so that the set takes effect immediately.

Corresponding command: fill-set(fill-until-set)

  • --fill-transparency FLOAT-OR-AUTO β€” Sets the fill transparency for subsequent curves, until cancelled with auto as argument.

Corresponding command: fill-transparency(float-or-auto)

  • --fill-transparency-set FLOAT-SET β€” Chooses a set for the fill transparency of subsequent curves. Also sets fill-transparency to auto, so that the set takes effect immediately.

Corresponding command: fill-transparency-set(float-set)

  • --line-cap LINE-CAP-OR-AUTO β€” Sets the line cap for subsequent curves, until cancelled with auto as argument.

Corresponding command: line-cap(line-cap-or-auto)

  • --line-style LINE-STYLE-OR-AUTO β€” Sets the line style for subsequent curves, until cancelled with auto as argument.

Corresponding command: line-style(line-style-or-auto)

  • --line-style-set LINE-STYLE-SET β€” Chooses a set for the line style of subsequent curves. Also sets line-style to auto, so that the set takes effect immediately.

Corresponding command: line-style-set(line-style-set)

  • --line-width FLOAT-OR-AUTO β€” Sets the line width for subsequent curves, until cancelled with auto as argument.

Corresponding command: line-width(float-or-auto)

  • --line-width-set FLOAT-SET β€” Chooses a set for the line width of subsequent curves. Also sets line-width to auto, so that the set takes effect immediately.

Corresponding command: line-width-set(float-set)

  • -m, --marker MARKER-OR-AUTO β€” Sets the marker for subsequent curves, until cancelled with auto as argument.

Corresponding command: marker(marker-or-auto)

  • --marker-angle FLOAT-OR-AUTO β€” Sets the marker angle for subsequent curves, until cancelled with auto as argument.

Corresponding command: marker-angle(float-or-auto)

  • --marker-color COLOR-OR-FALSE-OR-AUTO β€” Sets the marker color for subsequent curves, until cancelled with auto as argument.

Corresponding command: marker-color(color-or-false-or-auto)

  • --marker-color-map COLORMAP-OR-AUTO β€” Sets the color map for markers for subsequent curves, until cancelled with auto as argument.

Corresponding command: marker-color-map(colormap-or-auto)

  • --marker-color-set COLOR-OR-FALSE-SET β€” Chooses a set for the marker color of subsequent curves. Also sets marker-color to auto, so that the set takes effect immediately.

Corresponding command: marker-color-set(color-or-false-set)

  • --marker-fill-color COLOR-OR-FALSE-OR-AUTO β€” Sets the marker fill color for subsequent curves, until cancelled with auto as argument.

Corresponding command: marker-fill-color(color-or-false-or-auto)

  • --marker-fill-color-map COLORMAP-OR-AUTO β€” Sets the color map for the lines of markers for subsequent curves, until cancelled with auto as argument.

Corresponding command: marker-fill-color-map(colormap-or-auto)

  • --marker-fill-color-set COLOR-OR-FALSE-SET β€” Chooses a set for the marker fill color of subsequent curves. Also sets marker-fill-color to auto, so that the set takes effect immediately.

Corresponding command: marker-fill-color-set(color-or-false-set)


bestie we are SO not done yet β€” there's more of this page coming, don't you dare close the tab πŸ’œ

  • --marker-line-color COLOR-OR-FALSE-OR-AUTO β€” sets the marker stroke color for the curves that come after this one, and it just keeps applying until you cancel it by passing auto as the argument. ✨
    • Corresponding command: marker-line-color(color-or-false-or-auto)
  • --marker-line-color-map COLORMAP-OR-AUTO β€” picks the color map used for the lines of markers on subsequent curves, until you cancel with auto. 🌈
    • Corresponding command: marker-line-color-map(colormap-or-auto)
  • --marker-line-color-set COLOR-OR-FALSE-SET β€” chooses a set for the marker stroke color of subsequent curves. Heads up bestie: this also sets marker-line-color to auto, so the set kicks in immediately. πŸ’…
    • Corresponding command: marker-line-color-set(color-or-false-set)
  • --marker-line-width FLOAT-OR-AUTO β€” sets the marker line width for subsequent curves, until cancelled with auto.
    • Corresponding command: marker-line-width(float-or-auto)
  • --marker-min-scale FLOAT-OR-FALSE-OR-AUTO β€” sets the marker scale for subsequent curves, until cancelled with auto.
    • Corresponding command: marker-min-scale(float-or-false-or-auto)
  • --marker-scale FLOAT-OR-AUTO β€” sets the marker scale for subsequent curves, until cancelled with auto.
    • Corresponding command: marker-scale(float-or-auto)
  • --marker-scale-set FLOAT-SET β€” chooses a set for the marker scale of subsequent curves. And again β€” it also sets marker-scale to auto so your set takes effect immediately. 🫢
    • Corresponding command: marker-scale-set(float-set)
  • --marker-set MARKER-SET β€” chooses a set for the marker of subsequent curves, and also sets marker to auto so it takes effect right away.
    • Corresponding command: marker-set(marker-set)
  • --path-style TEXT-OR-AUTO β€” sets the path style for subsequent curves, until cancelled with auto.
    • Corresponding command: path-style(text-or-auto)
  • --path-style-set TEXT-SET β€” chooses a set for the path style of subsequent curves. Yep, it also sets path-style to auto so it applies immediately.
    • Corresponding command: path-style-set(text-set)
  • --region-side REGION-SIDE-OR-AUTO β€” sets the region side for subsequent curves, until cancelled with auto.
    • Corresponding command: region-side(region-side-or-auto)
  • --region-side-set REGION-SIDE-SET β€” chooses a set for the region side of subsequent curves. And (say it with me) it also sets region-side to auto, so the set takes effect immediately. πŸ’–
    • Corresponding command: region-side-set(region-side-set)
  • --reuse-style OBJECT β€” after you use this, the next curve gets the same style as the curve whose name you gave as the first argument (that's the name you gave to the /id= option to plot). Literally style-stealing, iconic. πŸ‘‘
    • Corresponding command: reuse-style(object)
  • --skip β€” acts as if one (or number) dataset had been drawn with respect to the style of the next dataset to be drawn. Like a ghost curve that only exists to bump the style counter. πŸ‘»
    • Optional arguments: number
    • Corresponding command: skip(,option=...)
  • --[no-]split-on-nan β€” so in general, NaNs (not a number, aka invalid data points in the dataset) are silently ignored, no drama. When this option is on, the lines of xy-plot-style plots get split whenever they hit a NaN. βœ‚οΈ
    • Corresponding command: split-on-nan(boolean-or-auto)
  • --zaxis TEXT-OR-AUTO β€” sets the name of the zaxis for the subsequent curves. This must be an axis that has been previously created using new-zaxis. This axis will be used to display the colormaps of the following curve.
    • Corresponding command: zaxis(text-or-auto)

πŸŽ€ Legends πŸŽ€

Commands to specify legends and tweak their look. The glow-up station, fr.

  • --[no-]auto-legend β€” when this is in effect (off by default), every dataset gets a legend β€” its 'dataset name' β€” unless another legend is manually specified.
    • Corresponding command: auto-legend(boolean)
  • -l, --legend TEXT β€” sets the legend for the next dataset. Overridden by the legend option to the plot command.
    • Corresponding command: legend(text)
  • --legend-inside ALIGNED-POINT β€” using this sets the position of the legends for the current (sub)plot inside it, at the exact location you give. As a shortcut, legend-inside also takes all the options that legend-style takes, with the same effect. πŸ¦‹
    • Optional arguments: class dy frame_cap frame_color frame_fill_color frame_fill_pattern frame_fill_transparency frame_padding frame_radius frame_shape frame_style frame_width id picto_height picto_to_text picto_width scale symbol_scale text_scale vpadding
    • Corresponding command: legend-inside(aligned-point,option=...)
  • --legend-line TEXT β€” adds a line of text to the legend that isn't attached to any curve. The options controlling the aspect of the legend are documented in the define-text-style command.
    • Optional arguments: align alignment angle color halign justification position scale shift text_align text_width valign
    • Corresponding command: legend-line(text,option=...)
  • --legend-multicol β€” following legends get layed out in multiple columns, until a call to legend-multicol-end.
    • Optional arguments: columns dx
    • Corresponding command: legend-multicol(,option=...)
  • --legend-multicol-end β€” stop layout out legends in several columns. πŸ›‘
    • Corresponding command: legend-multicol-end()
  • --legend-style β€” sets the various aspects of the style of the legends throught its options:
    • dy: the spacing between the baseline of consecutive lines; it is deprecated now in favor of vpadding;
    • vpadding: the space left between the bottom of a line and the top of the next one;
    • scale: the overall scale of the legends
    • text-scale: the scale of the text (and the markers) inside the legends

The frame- options control the drawing of a frame around the legend; they have the same meaning as corresponding ones of define-box-style with the frame- bit dropped.

  • Optional arguments: class dy frame_cap frame_color frame_fill_color frame_fill_pattern frame_fill_transparency frame_padding frame_radius frame_shape frame_style frame_width id picto_height picto_to_text picto_width scale symbol_scale text_scale vpadding
  • Corresponding command: legend-style(,option=...)

πŸ’œ Switch between different kinds of plots πŸ’œ

How to switch between different kinds of plot types. Mix and match, main character energy only.

  • --contour β€” switch to contour plots for later curves. Contour plots need three columns (X,Y,Z). They have major and minor lines. πŸ—ΊοΈ
    • Corresponding command: contour()
  • --histogram β€” switch to drawing histograms. πŸ“Š
    • Optional arguments: compute_dx cumulative gap intra_sep
    • Corresponding command: histogram(,option=...)
  • --xy-parametric β€” switch to XY parametric plots, that is standard XY plots whose appearance (such as color, marker color, and, potentially, marker kinds and more) are governed by one (or more ?) Z values.
    • Optional arguments: z1 z2 z3 z4
    • Corresponding command: xy-parametric(,option=...)
  • --xy-plot β€” switch (back) to standard XY plots (that's ctioga's default, bestie). 🎯
    • Corresponding command: xy-plot()
  • --xyz-map β€” switch to XYZ maps, ie plots where the color at a XY location is given by its Z value.
    • Corresponding command: xyz-map()

🌸 Plot coordinates 🌸

Plot coordinates. Where your stuff actually lives.

  • --margin FLOAT β€” leaves a margin around the data points. Expressed in relative size of the whole plot.
    • Corresponding command: margin(float)
  • --xfact FLOAT β€” alias for xscale.
    • Corresponding command: xfact(float)
  • --[no-]xlog β€” uses a logarithmic scale for the X axis.
    • Corresponding command: xlog(boolean)
  • --xoffset FLOAT β€” adds the given offset to all X coordinates.
    • Corresponding command: xoffset(float)
  • --xrange PARTIAL-FLOAT-RANGE β€” sets the range of the X coordinates.
Important note: when the axis is in log range (using xlog), the numbers you give are not the or ylog values, but their log10, so that to display X values from 1e-2 to 1e3, use:
xyrange -2:3
  • Corresponding command: xrange(partial-float-range)
  • --xscale FLOAT β€” multiplies the X coordinates by this factor.
    • Corresponding command: xscale(float)
  • --yfact FLOAT β€” alias for yscale.
    • Corresponding command: yfact(float)
  • --[no-]ylog β€” uses a logarithmic scale for the Y axis.
    • Corresponding command: ylog(boolean)
  • --yoffset FLOAT β€” adds the given offset to all Y coordinates.
    • Corresponding command: yoffset(float)
  • --yrange PARTIAL-FLOAT-RANGE β€” sets the range of the Y coordinates.
Important note: when the axis is in log range (using ylog), the numbers you give are not the or ylog values, but their log10, so that to display Y values from 1e-2 to 1e3, use:
yyrange -2:3
  • Corresponding command: yrange(partial-float-range)
  • --yscale FLOAT β€” multiplies the Y coordinates by this factor.
    • Corresponding command: yscale(float)

✨ Graphics primitives ✨

Tioga graphics primitives. Little building blocks, so cute.

  • --draw DRAWING-SPEC β€” tries to emulate the old --draw behavior of ctioga. Don't use it for new things.
    • Corresponding command: draw(drawing-spec)
  • --draw-arrow POINT POINT β€” draws arrow on the current plot, using the given style. For more information on the available options, see the define-arrow-style command. 🏹
    • Optional arguments: cap class clipped color depth head_angle head_color head_marker head_scale id line_style line_width style tail_angle tail_color tail_marker tail_scale width
    • Corresponding command: draw-arrow(point,point,option=...)
  • --draw-box POINT POINT β€” draws box on the current plot, using the given style. For more information on the available options, see the define-box-style command. πŸ“¦
  • Optional arguments: cap, class, clipped, color, depth, fill-color, fill-transparency, fill_color, fill_pattern, fill_transparency, id, radius, shape, style, width
    • Corresponding command: draw-box(point,point,option=...)
  • --draw-color-list POINT DIMENSION β€” literally draws the whole list of every named color right onto the current plot ✨
    • Optional arguments: class, clipped, columns, depth, id, padding, scale
    • Corresponding command: draw-color-list(point,dimension,option=...)
  • --draw-color-set-list POINT DIMENSION β€” same energy, but it's the list of all the color sets on the current plot 🎨
    • Optional arguments: class, clipped, depth, exclude, id, include, scale
    • Corresponding command: draw-color-set-list(point,dimension,option=...)
  • --draw-contour LEVEL β€” draws contour on the current plot, directly, no detours πŸ’…
    • Optional arguments: class, clipped, closed, color, depth, id, style, width
    • Corresponding command: draw-contour(level,option=...)
  • --draw-image FILE TOP-LEFT BOTTOM-RIGHT β€” draws an image on the current plot using the style you gave it. Wanna know what options exist? Go read the define-image-style command, bestie πŸ–ΌοΈ
    • Optional arguments: aspect_ratio, auto_rotate, class, clipped, depth, id, transparency
    • Corresponding command: draw-image(file,top-left,bottom-right,option=...)
  • --draw-legend-pictogram POINT OBJECT β€” draws the legend pictogram for the curve you handed it 🏷️
    • Optional arguments: class, clipped, depth, id, width
    • Corresponding command: draw-legend-pictogram(point,object,option=...)
  • --draw-line POINT POINT β€” draws a line on the current plot with the given style. For what you can actually tweak, see the define-line-style command πŸ“
    • Optional arguments: cap, class, clipped, color, depth, head_angle, head_color, head_marker, head_scale, id, line_style, line_width, style, tail_angle, tail_color, tail_marker, tail_scale, width
    • Corresponding command: draw-line(point,point,option=...)
  • --draw-line-style-list POINT DIMENSION β€” draws the list of every named line style straight onto the current plot πŸ”₯
    • Optional arguments: class, clipped, columns, depth, id, padding, scale
    • Corresponding command: draw-line-style-list(point,dimension,option=...)
  • --draw-marker POINT MARKER β€” draws a marker on the current plot with the given style. The deets on the options live in the define-marker-style command πŸ’–
    • Optional arguments: alignment, angle, class, clipped, color, depth, fill_color, horizontal_scale, id, justification, scale, stroke_color, stroke_width, vertical_scale
    • Corresponding command: draw-marker(point,marker,option=...)
  • --draw-marker-list POINT DIMENSION β€” draws the list of all named markers on the current plot ⭐
    • Optional arguments: class, clipped, columns, depth, id, padding, scale
    • Corresponding command: draw-marker-list(point,dimension,option=...)
  • --draw-marker-set-list POINT DIMENSION β€” and this one draws the list of all the marker sets on the current plot 🌈
    • Optional arguments: class, clipped, depth, exclude, id, include, scale
    • Corresponding command: draw-marker-set-list(point,dimension,option=...)
  • --draw-oriented-line POINT DIMENSION β€” draws an oriented-line on the current plot with the given style. Options? The define-oriented-line-style command has your back πŸ’«
    • Optional arguments: angle, cap, class, clipped, color, depth, head_angle, head_color, head_marker, head_scale, id, origin, style, tail_angle, tail_color, tail_marker, tail_scale, width
    • Corresponding command: draw-oriented-line(point,dimension,option=...)
  • --draw-string-marker POINT TEXT β€” draws a marker on the current plot with the given style. Yeah, same deal β€” go peep the define-marker-style command for the option list πŸ”€
    • Optional arguments: alignment, angle, class, clipped, color, depth, fill_color, font, horizontal_scale, id, justification, scale, stroke_color, stroke_width, vertical_scale
    • Corresponding command: draw-string-marker(point,text,option=...)
  • --draw-tangent DATA-POINT β€” draws a tangent on the current plot with the given style. The options are documented under the define-arrow-style command πŸ“
    • Optional arguments: cap, class, clipped, color, depth, head_angle, head_color, head_marker, head_scale, id, line_style, line_width, nbavg, style, tail_angle, tail_color, tail_marker, tail_scale, width, xextent, xfrom, xto, yextent, yfrom, yto
    • Corresponding command: draw-tangent(data-point,option=...)
  • --draw-text POINT TEXT β€” draws text on the current plot with the given style. Every knob and dial is described in the define-text-style command ✍️
    • Optional arguments: alignment, angle, class, clipped, color, depth, font, halign, id, justification, position, scale, shift, text_align, text_width, valign
    • Corresponding command: draw-text(point,text,option=...)

✨ The 'direct' backend: Direct format ✨

The commands in this group drive the behaviour of the direct backend; see its documentation for more information πŸ‘‘

  • --direct β€” selects the 'direct' backend
    • Corresponding command: direct()

🧚 The 'gnuplot' backend: Gnuplot files 🧚

The commands in this group drive the behaviour of the gnuplot backend; see its documentation for more information

  • --gnuplot β€” selects the 'gnuplot' backend
    • Optional arguments: range, samples, vars
    • Corresponding command: gnuplot(,option=...)
  • --gnuplot-range RANGE β€” the plotting X range, like 0:2 πŸ“Š
    • Corresponding command: gnuplot-range(range)
  • --gnuplot-samples SAMPLES β€” the number of samples
    • Corresponding command: gnuplot-samples(samples)
  • --gnuplot-vars VARS β€” a colon-separated override of local variables, such as a=1;b=3;c=5
    • Corresponding command: gnuplot-vars(vars)

πŸ’œ The 'math' backend: Mathematical functions πŸ’œ

The commands in this group drive the behaviour of the math backend; see its documentation for more information

  • --math β€” selects the 'math' backend
    • Optional arguments: log, samples, trange, xrange
    • Corresponding command: math(,option=...)
  • --[no-]math-log β€” space samples logarithmically πŸ“ˆ
    • Corresponding command: math-log(log)
  • --math-samples SAMPLES β€” the number of points
    • Corresponding command: math-samples(samples)
  • --math-trange TRANGE β€” T range (a:b) (parametric plot)
    • Corresponding command: math-trange(trange)
  • --math-xrange XRANGE β€” X range (a:b)
    • Corresponding command: math-xrange(xrange)

πŸ¦‹ The 'smath' backend: Mathematical functions (multi-D) πŸ¦‹

The commands in this group drive the behaviour of the smath backend; see its documentation for more information

  • --smath β€” selects the 'smath' backend
    • Optional arguments: samples, urange, usamples, vrange, vsamples
    • Corresponding command: smath(,option=...)
  • --smath-samples SAMPLES β€” number of samples (default, overriden by variable-specific specs)
    • Corresponding command: smath-samples(samples)
  • --smath-urange URANGE β€” U range (a:b)
    • Corresponding command: smath-urange(urange)
  • --smath-usamples USAMPLES β€” number of U samples
    • Corresponding command: smath-usamples(usamples)
  • --smath-vrange VRANGE β€” V range (a:b)
    • Corresponding command: smath-vrange(vrange)
  • --smath-vsamples VSAMPLES β€” number of V samples
    • Corresponding command: smath-vsamples(vsamples)

🌸 The 'text' backend: Text format 🌸

The commands in this group drive the behaviour of the text backend; see its documentation for more information

  • --csv β€” now parse the following data files as CSV. Equivalent to
text /separator=/[,;]/
  • Corresponding command: csv()
  • --text β€” selects the 'text' backend
    • Optional arguments: col, header-line, parameters, separator, skip, split
    • Corresponding command: text(,option=...)
  • --text-col COL β€” which columns to use when the @1:2 syntax is not used
    • Corresponding command: text-col(col)
  • --text-header-line HEADER-LINE β€” regular expression indicating the header line (containing column names), defaulting to /^##/
    • Corresponding command: text-header-line(header-line)
  • --text-parameters PARAMETERS β€” regular expression for extracting parameters from a file. Defaults to nil (ie nothing)
    • Corresponding command: text-parameters(parameters)
  • --text-separator SEPARATOR β€” the columns separator. Defaults to / +/
    • Corresponding command: text-separator(separator)
  • --text-skip SKIP β€” number of lines to be skipped at the beginning of the file
    • Corresponding command: text-skip(skip)
  • --[no-]text-split β€” if true, splits files into subsets on blank/non number lines βœ‚οΈ
    • Corresponding command: text-split(split)

πŸŽ€ LaTeX πŸŽ€

Commands providing control over the LaTeX output (preamble, packages...) β€” yeah, the whole typesetting situation πŸ’…

  • --preamble TEXT β€” adds the given string to the LaTeX preamble of the output.
    • Corresponding command: preamble(text)
  • --set-global-font β€” set global font. Sets the size of everything, including that of text that has already been used. πŸ‘€ yes, everything, even the stuff you already wrote.
    • Optional arguments: size
    • Corresponding command: set-global-font(,option=...)
  • --use TEXT β€” adds a command to include the LaTeX package into the preamble. The arguments, if given, are given within [square brackets].
    • Optional arguments: arguments
    • Corresponding command: use(text,option=...)
  • --utf8 β€” makes ctioga2 use UTF-8 for all text. It is exactly equivalent to the command preamble with the argument:
sepackage[utf8]{inputenc}sepackage[T1]{fontenc}
  • Corresponding command: utf8()

🌈 Subplots and assimilated 🌈

Subplots and assimilated

  • --end β€” leaves the current subobject. πŸ‘‹ bye bestie
    • Corresponding command: end()
  • --frame-margins FRAME-MARGINS β€” sets the margins for the current plot πŸ’–. Margins are literally the same thing as the position (like the one you'd specify for an inset). Heads up bestie: using this inside an inset or a more complex plot might give you unexpected results, no cap. Its main character moment is controlling the padding around simple plots.

The options override the contents of the margin, which makes it super easy to set all the dimensions to one value and only override the ones you actually need:

frame-margins 2mm /left=1cm

This sets all the margins around the side to 2mm except the left one β€” which means, in particular, the bottom axis tick labels will be cut 😭.

Optional arguments: bottom, left, right, top

Corresponding command: frame-margins(frame-margins,option=...)

  • --gradient COLOR COLOR β€” every curve between this command and the matching end gets its color set to a weighted average of the two colors you passed. It's giving gradient. It's giving slay 🌈.

Optional arguments: class, id

Corresponding command: gradient(color,color,option=...)

  • --hide OBJECTS β€” hides all the named objects in the list. Genuinely iconic for making animations ✨.

Optional arguments: show

Corresponding command: hide(objects,option=...)

  • --inset BOX β€” starts a brand new inset inside the box you give it.

And if no graph has been started yet? It just creates a new graph using the given box. Basically it does what it looks like it should do 🫢.

Optional arguments: class, id

Corresponding command: inset(box,option=...)

  • --next-inset BOX β€” has the same effet as end followed by inset. (Yes, "effet" β€” we keep it exactly as the page says it, periodt πŸ’…)

Highkey useful for chaining subgraphs. If that's your vibe, you might be interested in the grid box specification and setup-grid.

Optional arguments: class, id

Corresponding command: next-inset(box,option=...)

  • --padding DIMENSION β€” when the frame-margins is set to automatic, ctioga2 leaves that much space around the plot on the sides where there are no labels.

Corresponding command: padding(dimension)

  • --plot-scale FLOAT β€” applies a scaling factor to the whole current subplot. Depending on the what option (default is text), the scale applies to:
    • text ('text' or 'both')
    • marker size ('text' or 'both')
    • line widths ('lines' or 'both')

Scaling also applies to all the elements of the plot that were added before the call to plot-scale. Not me noticing that detail, but it's important fr fr πŸ‘‘

Optional arguments: what

Corresponding command: plot-scale(float,option=...)

  • --region β€” the curves up to the corresponding end will be considered for delimiting a colored region between them πŸŽ€. The actual position of the curves with respect to the region can be fine-tuned using the region-side command (or the corresponding option to plot).

Optional arguments: class, color, id, pattern, reversed_color, reversed_pattern, reversed_transparency, transparency

Corresponding command: region(,option=...)

  • --reopen OBJECT β€” reopens a previously finished container, like a subplot, a region or a gradient πŸ¦‹. Just hand it the unique name you gave as the /id= option to the first command.

Corresponding command: reopen(object)

  • --root-plot β€” begins the root plot πŸ‘‘. This command is only necessary if you want to give styling information to the root plot.

Optional arguments: class, id

Corresponding command: root-plot(,option=...)

  • --setup-grid TEXT β€” sets up a grid of the given layout (like 2x1). After this command, arguments such as grid:0,1 can be used as the box argument of the inset and next-inset commands.

Alternatively, the layout can be specified as 1,2,1x1,4, in which case there are three columns and two rows; the second column is 2 times larger than the other ones, while the second row is 4 times larger than the first. Math but make it cute πŸ’œ

Optional arguments: bottom, dx, dy, left, right, top

Corresponding command: setup-grid(text,option=...)

  • --text-adjust-mode TEXT-ADJUST-MODE β€” when this is on (and it's the default), ctioga2 tries to be smart about the size of the text bits around the plot ✨. But ngl, that can be bothersome at times, so you can disable it with this command.

Corresponding command: text-adjust-mode(text-adjust-mode)


🌈 Axes and labels 🌈

  • --axis-style AXIS β€” this command sets various aspects of the style of the given axis through its various options, which are documented in more detail in the define-axis-style command β€” excepted for the ticks bit, which is documented in the ticks command πŸ“.

If the option also-axes is specified, the style is also applied to the comma-separated list of axes it contains.

Optional arguments: also-axes, axis_label_alignment, axis_label_angle, axis_label_color, axis_label_halign, axis_label_justification, axis_label_loc, axis_label_position, axis_label_scale, axis_label_shift, axis_label_text, axis_label_text_align, axis_label_text_width, axis_label_valign, background_lines_cap, background_lines_color, background_lines_style, background_lines_width, decoration, line_width, location, log, major_tick_length, major_tick_width, minor_tick_length, minor_tick_width, offset, stroke_color, tick_label_alignment, tick_label_angle, tick_label_color, tick_label_halign, tick_label_justification, tick_label_position, tick_label_scale, tick_label_shift, tick_label_text_align, tick_label_text_width, tick_label_valign, ticks_format, ticks_format_last, ticks_labels, ticks_major, ticks_major_delta, ticks_major_number, ticks_major_sep, ticks_minor, ticks_minor_delta, ticks_minor_number, ticks_minor_sep_min, ticks_side, transform

Corresponding command: axis-style(axis,option=...)

  • --background-grid COLOR-OR-FALSE β€” shortcut to set the color for the left and bottom axes πŸŽ€

Optional arguments: cap, style, width

Corresponding command: background-grid(color-or-false,option=...)

  • --background-lines AXIS COLOR-OR-FALSE β€” sets the color of the background lines for the given axis.

Optional arguments: cap, style, width

Corresponding command: background-lines(axis,color-or-false,option=...)

  • --bottom AXIS-DECORATION β€” sets the type of the bottom axis.

The options have the same meaning as for define-axis-style, so go read that command for more info πŸ‘€.

Optional arguments: axis_label_alignment, axis_label_angle, axis_label_color, axis_label_halign, axis_label_justification, axis_label_loc, axis_label_position, axis_label_scale, axis_label_shift, axis_label_text, axis_label_text_align, axis_label_text_width, axis_label_valign, background_lines_cap, background_lines_color, background_lines_style, background_lines_width, line_width, location, log, major_tick_length, major_tick_width, minor_tick_length, minor_tick_width, offset, stroke_color, tick_label_alignment, tick_label_angle, tick_label_color, tick_label_halign, tick_label_justification, tick_label_position, tick_label_scale, tick_label_shift, tick_label_text_align, tick_label_text_width, tick_label_valign, ticks_format, ticks_format_last, ticks_labels, ticks_major, ticks_major_delta, ticks_major_number, ticks_major_sep, ticks_minor, ticks_minor_delta, ticks_minor_number, ticks_minor_sep_min, ticks_side, transform

Corresponding command: bottom(axis-decoration,option=...)

  • --clear-axes β€” removes all the axes and their associated labels. Clean slate, bestie 🧹✨

Corresponding command: clear-axes()

  • --drawing-frame β€” sets up a drawing frame, i.e. a frame in which the top-left point is at 0,0, with X and Y values positive over the whole frame, and counted in centimeters (or with the unit given using the /units option, i.e. /units=mm expressed in millimeters, or /units=12pt expressed in multiple of 12 TeX points). It's giving artsy 🎨

Optional arguments: units

Corresponding command: drawing-frame(,option=...)

  • --label-style LABEL β€” sets the style of the given label (see the type label for more information). See define-text-style for the detailed meaning of the options πŸ“–.

The option text lets you also set the text of the label (but it does not work for ticks, sadly).

For tick labels, setting the color option also sets the color for the lines of the corresponding axis. If you don't want that, you can override the color using the stroke-color option of axis-style. This will only work with Tioga version 1.11 or greater β€” no cap πŸ’…

Optional arguments: align, alignment, angle, color, halign, justification, loc, position, scale, shift, text, text_align, text_width, valign

Corresponding command: label-style(label,option=...)

  • --left AXIS-DECORATION β€” sets the type of the left axis.

The options have the same meaning as for define-axis-style, see that command for more information 🌸.

Optional arguments: axis_label_alignment, axis_label_angle, axis_label_color, axis_label_halign, axis_label_justification, axis_label_loc, axis_label_position, axis_label_scale, axis_label_shift, axis_label_text, axis_label_text_align, axis_label_text_width, axis_label_valign, background_lines_cap, background_lines_color, background_lines_style, background_lines_width, line_width, location, log, major_tick_length, major_tick_width, minor_tick_length, minor_tick_width, offset, stroke_color, tick_label_alignment, tick_label_angle, tick_label_color, tick_label_halign, tick_label_justification, tick_label_position, tick_label_scale, tick_label_shift, tick_label_text_align, tick_label_text_width, tick_label_valign, ticks_format, ticks_format_last, ticks_labels, ticks_major, ticks_major_delta, ticks_major_number, ticks_major_sep, ticks_minor, ticks_minor_delta, ticks_minor_number, ticks_minor_sep_min, ticks_side, transform

Corresponding command: left(axis-decoration,option=...)

  • --new-zaxis TEXT β€” creates a named Z axis that can display information from Z color maps πŸŒˆπŸ‘‘

Optional arguments for this one: axis_label_alignment, axis_label_angle, axis_label_color, axis_label_halign, axis_label_justification, axis_label_loc, axis_label_position, axis_label_scale, axis_label_shift, axis_label_text, axis_label_text_align, axis_label_text_width, axis_label_valign, background_lines_cap, background_lines_color, background_lines_style, background_lines_width, bar_shift, bar_size, bounds, class, decoration, id, line_width, location, log, major_tick_length, major_tick_width, minor_tick_length, minor_tick_width, offset, padding, stroke_color, tick_label_alignment, tick_label_angle, tick_label_color, tick_label_halign, tick_label_justification, tick_label_position, tick_label_scale, tick_label_shift, tick_label_text_align, tick_label_text_width, tick_label_valign, ticks_format, ticks_format_last, ticks_labels, ticks_major, ticks_major_delta, ticks_major_number, ticks_major_sep, ticks_minor, ticks_minor_delta, ticks_minor_number, ticks_minor_sep_min, ticks_side, transform.

Corresponding command: new-zaxis(text,option=...)

  • --no-title β€” poof πŸ’¨ the title of the current plot is gone.

Corresponding command: no-title()

  • --no-xlabel β€” yeets the X label off the current plot. bye bestie πŸ’…

Corresponding command: no-xlabel()

  • --no-ylabel β€” same energy, but for the Y label of the current plot.

Corresponding command: no-ylabel()

  • --right AXIS-DECORATION β€” sets the type of the right axis.

The options hit exactly the same as for define-axis-style, so go read that one if you need the deets πŸ‘€

Optional arguments: axis_label_alignment, axis_label_angle, axis_label_color, axis_label_halign, axis_label_justification, axis_label_loc, axis_label_position, axis_label_scale, axis_label_shift, axis_label_text, axis_label_text_align, axis_label_text_width, axis_label_valign, background_lines_cap, background_lines_color, background_lines_style, background_lines_width, line_width, location, log, major_tick_length, major_tick_width, minor_tick_length, minor_tick_width, offset, stroke_color, tick_label_alignment, tick_label_angle, tick_label_color, tick_label_halign, tick_label_justification, tick_label_position, tick_label_scale, tick_label_shift, tick_label_text_align, tick_label_text_width, tick_label_valign, ticks_format, ticks_format_last, ticks_labels, ticks_major, ticks_major_delta, ticks_major_number, ticks_major_sep, ticks_minor, ticks_minor_delta, ticks_minor_number, ticks_minor_sep_min, ticks_side, transform.

Corresponding command: right(axis-decoration,option=...)

  • --ticks AXIS β€” this one is your remote control for where the major and minor ticks land, plus what their labels actually say, for whichever axis you point at 🎯 Options you can pass:
    • format β€” the format of the tick labels, written in a sprintf-like syntax (more on that below)
    • format-last β€” the format of the last of the tick labels (genuinely useful when you wanna sneak in an overall "power-of-ten" factor)
    • major β€” a space- or comma-separated list of the positions of the major (labeled) ticks
    • minor β€” same thing, but for the minor ticks
    • label β€” a comma-separated list of the tick labels (and it must have the same number of elements as the major list does). If you absolutely have to include a comma inside, then use || as a separator instead.

Format is a normal sprintf format, plus these extra special codes:

  • %p β€” the "common power of 10": divide your tick values by 10 to the power %p and the smallest absolute value lands between 1 and 10 (zero excluded, obviously)
  • %b... β€” the tick value divided by this common power of 10. You must follow this spec with a usual sprintf format: %b.3g would get you a number with 3 significant digits

Optional arguments: format, format_last, labels, major, major_delta, major_number, major_sep, minor, minor_delta, minor_number, minor_sep_min.

Corresponding command: ticks(axis,option=...)

  • -t, --title TEXT β€” sets the title of the current plot. main character moment fr πŸ‘‘

Optional arguments: align, alignment, angle, color, halign, justification, loc, position, scale, shift, text_align, text_width, valign.

Corresponding command: title(text,option=...)

  • --top AXIS-DECORATION β€” sets the type of the top axis.

Again, the options mean the same thing as for define-axis-style β€” that command is your study guide πŸ“š

Optional arguments: axis_label_alignment, axis_label_angle, axis_label_color, axis_label_halign, axis_label_justification, axis_label_loc, axis_label_position, axis_label_scale, axis_label_shift, axis_label_text, axis_label_text_align, axis_label_text_width, axis_label_valign, background_lines_cap, background_lines_color, background_lines_style, background_lines_width, line_width, location, log, major_tick_length, major_tick_width, minor_tick_length, minor_tick_width, offset, stroke_color, tick_label_alignment, tick_label_angle, tick_label_color, tick_label_halign, tick_label_justification, tick_label_position, tick_label_scale, tick_label_shift, tick_label_text_align, tick_label_text_width, tick_label_valign, ticks_format, ticks_format_last, ticks_labels, ticks_major, ticks_major_delta, ticks_major_number, ticks_major_sep, ticks_minor, ticks_minor_delta, ticks_minor_number, ticks_minor_sep_min, ticks_side, transform.

Corresponding command: top(axis-decoration,option=...)

  • --x2 β€” switches to using the top axis for the X axis for all the subsequent curves, and turns on full decoration for the right axis. It's literally just a shortcut for this ✨
xaxis top
axis-style top /decoration=full

Corresponding command: x2()

  • --xaxis AXIS β€” sets the default axis for the X axis, so every subsequent command that leans on default axes (think plot, xrange, yrange...) knows what's up.

Corresponding command: xaxis(axis)

  • -x, --xlabel TEXT β€” sets the X label of the current plot.

Optional arguments: align, alignment, angle, color, halign, justification, loc, position, scale, shift, text_align, text_width, valign.

Corresponding command: xlabel(text,option=...)

  • --y2 β€” switches to using the right axis for the Y axis for the subsequent curves, and turns on full decoration for the right axis. Shortcut for:
yaxis right
axis-style right /decoration=full

Corresponding command: y2()

  • --yaxis AXIS β€” sets the default axis for the Y axis for all subsequent commands that rely on default axes (like plot, xrange, yrange...).

Corresponding command: yaxis(axis)

  • -y, --ylabel TEXT β€” sets the Y label of the current plot.

Optional arguments: align, alignment, angle, color, halign, justification, loc, position, scale, shift, text_align, text_width, valign.

Corresponding command: ylabel(text,option=...)


🌈 Background 🌈

Commands that deal with how the background of a plot looks (background lines are not invited to this party β€” they're linked to axes, different vibe entirely).

  • --background COLOR-OR-FALSE β€” sets the background color for the current (and subsequent?) plot.

Corresponding command: background(color-or-false)

  • --watermark TEXT β€” sets a watermark for the background of the current plot 🫧

Optional arguments: alignment, angle, color, fill_color, font, horizontal_scale, justification, scale, stroke_color, stroke_width, vertical_scale.

Corresponding command: watermark(text,option=...)


πŸŽ€ Default styles πŸŽ€

Commands for defining default styles, bestie.

Every one of these takes the selector of the style you're defining. It's a CSS-like selector β€” it works off #id and .class, and it uses #parentality. So if you define a style for .insets #stuff, that style applies to an object named stuff, but only when it's sitting inside another object that carries the .insets class. Nested, iykyk πŸ’…

ctioga2 does not support changing a style after it's been used. Depending on the context, it may affect only the objects that come after, or all the objects that were created from the very beginning. For safety, only define styles before you issue any graphics command. No cap. 🚨
  • --define-arrow-style TEXT β€” sets the default style for arrows. Every arrow style descends from the base style. Wanna use a different style than base? Pass its name as the /base-style option to the draw-arrow command.

What the style parameters actually mean:

  • color, style and width: same as in define-line-style
  • head-marker, tail-marker: a marker to be used for the head or for the tail
  • head-scale, tail-scale: scale of the head or tail markers
  • head-angle, tail-angle: rotate the head or the tail by that many degrees
  • head-color, tail-color: the color of the head or tail

Optional arguments: cap, color, head_angle, head_color, head_marker, head_scale, style, tail_angle, tail_color, tail_marker, tail_scale, width.

Corresponding command: define-arrow-style(text,option=...)

  • --define-axis-style TEXT β€” sets the style for a whole axis. All axis styles descend from the base style. Horizontal and vertical axis styles descend from the x and y styles, and plot sides get styled with the left, right, top and bottom styles.

Axis styles have so many parameters, buckle up:

  • axis-label- and tick-label- parameters are title style parameters β€” their meaning is given in define-title-style, and they affect ticks and axis labels
  • decoration: an axis-decoration that specifies which ticks and tick labels to draw
  • background-lines- parameters define the style of background lines, exactly as in define-line-style
  • --define-axis-style TEXT (continued) β€” the optional arguments you can hand it are: axis_label_alignment axis_label_angle axis_label_color axis_label_halign axis_label_justification axis_label_loc axis_label_position axis_label_scale axis_label_shift axis_label_text axis_label_text_align axis_label_text_width axis_label_valign background_lines_cap background_lines_color background_lines_style background_lines_width decoration line_width location log major_tick_length major_tick_width minor_tick_length minor_tick_width offset stroke_color tick_label_alignment tick_label_angle tick_label_color tick_label_halign tick_label_justification tick_label_position tick_label_scale tick_label_shift tick_label_text_align tick_label_text_width tick_label_valign ticks_format ticks_format_last ticks_labels ticks_major ticks_major_delta ticks_major_number ticks_major_sep ticks_minor ticks_minor_delta ticks_minor_number ticks_minor_sep_min ticks_side transform ✨

Corresponding command: define-axis-style(text,option=...)


  • --define-background-style TEXT β€” sets the style for the plot background, bestie πŸŽ€ All background styles descend from the base style. On top of that, a plot's background gets changed by the style name background.

Meaning of the style parameters:

  • watermark: the text of the watermark
  • all watermark_ styles have the same meaning as in define-text-style, because the watermark is a string marker ✍️
  • background_color: the color of the background

Optional arguments: background_color watermark watermark_alignment watermark_angle watermark_color watermark_fill_color watermark_font watermark_horizontal_scale watermark_justification watermark_scale watermark_stroke_color watermark_stroke_width watermark_vertical_scale

Corresponding command: define-background-style(text,option=...)

  • --define-box-style TEXT β€” sets the default style for boxes πŸ“¦ All box styles descend from the base style. Wanna use a style that isn't base? Just pass its name as the /base-style option to the draw-box command, periodt.

Meaning of the style parameters:

  • color, style and width: same as in define-line-style
  • fill-color: fill color for the box
  • fill-transparency: the transparency for the fill, from 0 to 1

Optional arguments: cap color fill_color fill_pattern fill_transparency radius shape style width

Corresponding command: define-box-style(text,option=...)

  • --define-curve-style TEXT β€” sets the default style for the named plot background, no cap 🌈

Optional arguments: clipped color color_map contour_conrec contour_minor_number contour_minor_scale contour_minor_style contour_minor_width contour_number contour_use_naturals depth error_bar_color error_bar_line_cap error_bar_line_color error_bar_line_style error_bar_line_width fill fill_close_type fill_color fill_pattern fill_transparency legend line_cap line_color line_style line_width location_xaxis location_yaxis marker marker_angle marker_color marker_color_map marker_fill_color marker_fill_color_map marker_line_color marker_line_color_map marker_line_width marker_marker marker_min_scale marker_scale path_style region_position split_on_nan zaxis

Corresponding command: define-curve-style(text,option=...)

  • --define-image-style TEXT β€” sets the default style for the named image πŸ–ΌοΈ

Optional arguments: aspect_ratio auto_rotate transparency

Corresponding command: define-image-style(text,option=...)

  • --define-legend-style TEXT β€” sets the style for legends, iconic behavior fr fr πŸ‘‘

Optional arguments: dy frame_cap frame_color frame_fill_color frame_fill_pattern frame_fill_transparency frame_padding frame_radius frame_shape frame_style frame_width picto_height picto_to_text picto_width scale symbol_scale text_scale vpadding

Corresponding command: define-legend-style(text,option=...)

  • --define-line-style TEXT β€” sets the default style for lines πŸ“ All line styles descend from the base style. Wanna use a style that isn't base? Pass its name as the /base-style option to the draw-line command.

Meaning of the style parameters:

  • color: the color of the line, see color
  • style: the line style, see line-style
  • width: the line width (in points)
lowkey the way these two hit different is everything:
--define-line-style * /color=Pink

makes all lines pink (unless overridden by the /color option to draw-line), while

--define-line-style .pink /color=Pink

only affects those that were given the /class=pink style option. iykyk πŸ’…

Optional arguments: cap color style width

Corresponding command: define-line-style(text,option=...)

  • --define-marker-style TEXT β€” sets the style for marker and marker strings 🎯 All marker and marker string styles descend from the base style. Use a style different than base by passing its name as the /base-style option to the draw-marker or draw-string-marker commands.

Meaning of the style parameters:

  • alignment, justification, angle, color and scale: as in define-text-style
  • fill-color and stroke_color: markers are both stroked and filled, so you can control all colors in one go using color, or specify each with fill-color and stroke_color
  • font: is a PDF font number (from 1 to 14), only used for marker strings
  • horizontal-scale, vertical-scale: scales the marker only horizontally or vertically

Optional arguments: alignment angle color fill_color font horizontal_scale justification scale stroke_color stroke_width vertical_scale

Corresponding command: define-marker-style(text,option=...)

  • --define-oriented-line-style TEXT β€” sets the default style for the named oriented lines 🧭

Optional arguments: angle cap color head_angle head_color head_marker head_scale origin style tail_angle tail_color tail_marker tail_scale width

Corresponding command: define-oriented-line-style(text,option=...)

  • --define-style TEXT β€” the mother of all style-setters, bestie, it's giving main character energy πŸ‘‘

Optional arguments: alignment angle aspect_ratio auto_rotate axis_label_alignment axis_label_angle axis_label_color axis_label_halign axis_label_justification axis_label_loc axis_label_position axis_label_scale axis_label_shift axis_label_text axis_label_text_align axis_label_text_width axis_label_valign background_color background_lines_cap background_lines_color background_lines_style background_lines_width cap clipped color color_map contour_conrec contour_minor_number contour_minor_scale contour_minor_style contour_minor_width contour_number contour_use_naturals decoration depth dy error_bar_color error_bar_line_cap error_bar_line_color error_bar_line_style error_bar_line_width fill fill_close_type fill_color fill_pattern fill_transparency font frame_cap frame_color frame_fill_color frame_fill_pattern frame_fill_transparency frame_padding frame_radius frame_shape frame_style frame_width halign head_angle head_color head_marker head_scale horizontal_scale justification legend line_cap line_color line_style line_width loc location location_xaxis location_yaxis log major_tick_length major_tick_width marker marker_angle marker_color marker_color_map marker_fill_color marker_fill_color_map marker_line_color marker_line_color_map marker_line_width marker_marker marker_min_scale marker_scale minor_tick_length minor_tick_width offset origin path_style picto_height picto_to_text picto_width position radius region_position scale shape shift split_on_nan stroke_color stroke_width style symbol_scale tail_angle tail_color tail_marker tail_scale text text_align text_scale text_width tick_label_alignment tick_label_angle tick_label_color tick_label_halign tick_label_justification tick_label_position tick_label_scale tick_label_shift tick_label_text_align tick_label_text_width tick_label_valign ticks_format ticks_format_last ticks_labels ticks_major ticks_major_delta ticks_major_number ticks_major_sep ticks_minor ticks_minor_delta ticks_minor_number ticks_minor_sep_min ticks_side transform transparency valign vertical_scale vpadding watermark watermark_alignment watermark_angle watermark_color watermark_fill_color watermark_font watermark_horizontal_scale watermark_justification watermark_scale watermark_stroke_color watermark_stroke_width watermark_vertical_scale width zaxis

Corresponding command: define-style(text,option=...)

  • --define-text-style TEXT β€” sets the default style for texts πŸ’¬ All text styles descend from the base style. Use a style different than base by passing its name as the /base-style option to the draw-text command.

Meaning of the style parameters:

  • alignment: vertical alignment
  • justification: horizontal alignment
  • angle: angle in degrees to the horizontal (or default orientation in some cases)
  • color: text color
  • scale: text scale

Optional arguments: alignment angle color halign justification position scale shift text_align text_width valign

Corresponding command: define-text-style(text,option=...)

  • --define-title-style TEXT β€” sets the style for the title 🌟 All title styles descend from the base style. On top of that, the title of a plot is addressed by the style name title.

Meaning of the style parameters:

  • alignment, justification, angle, color and scale: as in define-text-style
  • text: sets the title text
  • loc: the side on which to display the title, a location
  • shift: the distance away from the plot in text size units (maybe a dimension should be better later)
  • position: shift from the center (parallel to the plot side)

Optional arguments: alignment angle color halign justification loc position scale shift text text_align text_width valign

Corresponding command: define-title-style(text,option=...)

  • --load-style FILE
  • Corresponding command: load-style(file)

πŸŽ€ Output setup πŸŽ€

okay so this whole group is about making output files exist, in all their various aspects, and honestly it's giving backstage-pass energy:

  • where the output file actually lives
  • post-processing (and yes, that includes auto-display, we love a dramatic reveal)
  • cleanup...

  • --[no-]clean β€” when this is on (which is the default, periodt), ctioga2 automatically cleans up the intermediate files that Tioga makes. But lowkey, when LaTeX fails on you, those intermediate files are the only witnesses 😭, so turn this off if you wanna peek inside them.
    • Corresponding command: clean(boolean)
  • --[no-]cleanup-pdf β€” turn this on and ctioga2 runs the PDF it made through ghostscript to clean it up. It's on by default if ctioga2 can find the gs executable. (no gs, no cleanup, that's the vibe.)
    • Corresponding command: cleanup-pdf(boolean)
  • --dependencies FILE β€” saves the dependencies as a Makefike into the file name you give it.
    • Corresponding command: dependencies(file)
  • --[no-]eps β€” when this is on, every PDF file produced gets converted to EPS using the pdftops program (from the xpdf tools suite, iykyk).
    • Corresponding command: eps(boolean)
  • --[no-]mark β€” when this is on β€” and it is the default, because it comes in very useful β€” the 'title' field of the PDF informations gets set to the command-line that resulted in that PDF file. Disable it if you don't want any info leaking out πŸ‘€.
heads up bestie: this will not log the values of the CTIOGA2_PRE and CTIOGA2_POST variables, so if you make heavy use of those, you might still end up with a different output.
  • Corresponding command: mark(boolean)
  • -n, --name FIGURE_NAME β€” sets the name of the figure, which is also the base name for the output file. This has nothing to do with the title of the plot, okay? That's a whole separate thing, set with the title command. Don't mix them up πŸ’…

If the name contains a %, ctioga2 reads it as a printf-like format and will attempt to find the first file that does not exist, feeding it with increasing numbers.

The default value is now Plot-%03d, which means you'll get increasing numbers automatically. iconic.

  • Corresponding command: name(figure name)
  • --open β€” uses open (available on MacOS) to view the PDF files produced by ctioga2.
    • Corresponding command: open()
  • -o, --output FIGURE_NAME β€” writes a figure with the given name (see name) and keeps the current state. This is the one you use to create an animation 🎬.
    • Corresponding command: output-now(figure name)
  • --output-and-reset β€” writes the current figure and starts a fresh one. All the non-graphical information is kept (curves loaded, figure names, preamble, and so on).
    • Corresponding command: output-and-reset()
  • -O, --output-directory TEXT β€” sets the directory to which files will be plot. It defaults to the current directory.
    • Corresponding command: output-directory(text)
  • -r, --page-size TEXT β€” sets the size of the output PDF file, in real units. Takes arguments in the form of 12cm x 3in (spaces can be omitted, we're flexible like that).
    • Optional arguments: count-legend
    • Corresponding command: page-size(text,option=...)
  • --png RESOLUTION β€” turns all produced PDF files into PNG images of the given resolution using convert. This also has for effect to set the page-size to the resolution divided by the 'scale' option in Postscript points. By default, 2 pixels are rendered for 1 final to produce a nicely antialiased image ✨. Use the 'oversampling' option to change that, in case the output looks too pixelized. This option only affects conversion time.
    • Optional arguments: oversampling pdftoppm scale
    • Corresponding command: png(resolution,option=...)
  • --resolution FLOAT β€” by default, ctioga2 has a resolution of 1/100th of a postscript point. That is clearly enough for most tasks, but you can increase it if you need, or decrease it to generate possibly a little more jaggy but less large PDF files.

The number given is the number of output points per postscript point.

better change that at the beginning of the plot, bestie.
  • Corresponding command: resolution(float)
  • --[no-]svg β€” when this feature is on, all produced PDF files are converted to SVG using the neat pdf2svg program. so cute, so vector.
    • Corresponding command: svg(boolean)
  • --viewer TEXT β€” sets the command for viewing the PDF file after ctioga2 has been run.
    • Corresponding command: viewer(text)
  • -X, --xpdf β€” uses xpdf to view the PDF files produced by ctioga2.

If xpdf is not found, then it tries to guess which viewers are available:

  • on windows, it uses the system file associations to open the PDF file
  • on mac, it uses the open command
  • on linux, it tries, mime-open, and if that is missing, falls back to commonly available PDF viewers.
  • Corresponding command: xpdf()

πŸ¦‹ Data stack manipulation πŸ¦‹

Commands for manipulation of the data stack. it's giving stacked-decks energy, but make it datasets πŸƒ


  • --append DATASET β€” use the current backend to load the given dataset(s) and append to the last dataset on the stack (without creating a new dataset). Roughly the equivalent of first running load and then join-datasets.
    • Optional arguments: as ignore_hooks where
    • Corresponding command: append(dataset,option=...)
  • --apply-formula TEXT β€” applies a formula to the last dataset (or the named one).
    • Optional arguments: name which
    • Corresponding command: apply-formula(text,option=...)
  • --bin β€” this command bins the contents of the Y column of the last dataset on the stack, and pushes the results as a new dataset.
    • Optional arguments: column delta max min name normalize number which
    • Corresponding command: bin(,option=...)
  • --compute-contour FLOAT β€” computes the contour at the given level for the given dataset (or the last on the stack if none is specified) and pushes it onto the data stack.

You can further manipulate it as usual. go off πŸ’…

  • Optional arguments: which
  • Corresponding command: compute-contour(float,option=...)
  • --dataset-hook COMMANDS β€” the dataset hook is a series of commands such as those in the command files that are run every time after a dataset is added onto the data stack. Its main use is to provide automatic filtering of data, but any arbitrary command can be used, so enjoy !
    • Corresponding command: dataset-hook(commands)
  • --dataset-hook-add COMMANDS β€” adds the given commands to the dataset hook. See dataset-hook for more information about the dataset hook.
    • Corresponding command: dataset-hook-add(commands)
  • --dataset-hook-clear β€” clears the dataset hook. See dataset-hook for more information.
    • Corresponding command: dataset-hook-clear()
  • --drop STORED-DATASET β€” removes the given dataset from the stack.

Can become useful when dealing with large datasets, some of which are only used as intermediates for apply-formula or compute-contour, for instance. declutter your stack, bestie 🧹

  • Corresponding command: drop(stored-dataset)
  • -j, --join-datasets β€” pops the last two (or number, if it is specified) datasets from the stack, concatenates them (older last) and push them back onto the stack. The name option can be used to give a name to the new dataset.
    • Optional arguments: name number which
    • Corresponding command: join-datasets(,option=...)
  • -L, --load DATASET β€” use the current backend to load the given dataset(s) onto the data stack.

If the name option is given, the last dataset loaded this way (if dataset expansion occurs) gets named, or, if it contains a %d (or similar construct), each dataset gets named with %d replace with the number of the dataset within the expansion (starting at 0). This name can be used to further use the dataset without remembering its number. See the type stored-dataset for more information.

  • Optional arguments: as ignore_hooks name where
  • Corresponding command: load(dataset,option=...)
  • --make-contour FLOAT
    • Optional arguments: as ignore_hooks name where which
    • Corresponding command: make-contour(float,option=...)
  • --merge-datasets β€” this commands merges data with matching X values from a dataset (by default the one before the last) into the last one. Data points that have no corresponding X value in the current dataset are simply ignored. If the columns option is provided, the numbered columns are use instead of the X columns (X is 1). More than one column can be provided this way, in which case *all* values must match.

This can be used to build 3D datasets for xyz-map or xy-parametric. obsessed with a little 3D moment 🧚

  • Optional arguments: columns number precision which
  • Corresponding command: merge-datasets(,option=...)
  • -P, --print-dataset β€” prints to standard output data contained in the last dataset pushed onto the stack, or the given stored dataset if the which option is given.
    • Optional arguments: save which
    • Corresponding command: print-dataset(,option=...)
  • --show-stack β€” displays the current contents of the dataset stack.

Mostly used for debugging when operations like merge-datasets or join-datasets don't work as expected. we've all been there πŸ™ˆ

  • Corresponding command: show-stack()
  • --xy-reglin

This command will get documented some day.

  • Optional arguments: linear which
  • Corresponding command: xy-reglin(,option=...)

πŸ‘‘ Introspection πŸ‘‘

Commands displaying information about the internals of ctioga2, such as known types/commands/backends... look inside the machine, bestie πŸ”


  • --edit-command TEXT β€” edit the given command in an editor. It will only work from the top directory of a ctioga2 source tree.
    • Optional arguments: doc
    • Corresponding command: edit-command(text,option=...)
  • --edit-group TEXT β€” edit the given group in an editor. It will only work from the top directory of a ctioga2 source tree.
    • Corresponding command: edit-group(text)
  • --edit-type TEXT β€” opens up the given type in your editor so you can poke at it. Heads up bestie, this only works if you're sitting in the top directory of a ctioga2 source tree, so no trying it from just anywhere πŸ’…

Corresponding command: edit-type(text)

  • --list-commands β€” shows you every single command ctioga2 knows about. the whole roster, periodt ✨

Optional arguments: format raw

Corresponding command: list-commands(,option=...)

  • --list-groups β€” lists all the command groups ctioga2 knows about, all organized and cute πŸŽ€

Optional arguments: raw

Corresponding command: list-groups(,option=...)

  • --list-styles β€” lists every available color set, marker set, and all that aesthetic goodness. it's giving palette reveal 🌈

Optional arguments: raw

Corresponding command: list-styles(,option=...)

  • --list-types β€” lists all the types ctioga2 knows about πŸ¦‹

Optional arguments: raw

Corresponding command: list-types(,option=...)

  • --version-raw β€” prints the raw version number with zero extra decoration and no newline. literally just the number, no vibes attached πŸ’€

Corresponding command: version-raw()


🧚 Filters 🧚

okay so the commands in this group act upon the last dataset pushed unto the data stack β€” think of them as filters, bestie 🫢

  • --avg-dup β€” installs the avg-dup-last command as a dataset hook (peep dataset-hook): every dataset acquired after this is switched on will get averaged if it has identical successive values of X.

Corresponding command: avg-dup()

  • --avg-dup-last β€” averages successive points that have identical X values. ngl this algorithm is naive about the min/max values and averages them right along with everything else, even though you might expect something smarter 😭

If you wanna average over all X values when they're not successive in the dataset, you should run sort-last first.

Optional arguments: mode

Corresponding command: avg-dup-last(,option=...)

  • --cherry-pick TEXT β€” installs the cherry-pick-last command as a dataset hook (peep dataset-hook): every point where the formula returns false gets removed for subsequent datasets πŸ“

Corresponding command: cherry-pick(text)

  • --cherry-pick-last TEXT β€” removes the data from the last dataset on the data stack wherever the formula returns false.

See also the cherry-pick command if you wanna apply that selection to all the datasets, not just the last one.

fr fr, you might find it way easier to just use the /where option of the plot or load commands πŸ‘‘

Corresponding command: cherry-pick-last(text)

  • --smooth INTEGER β€” installs the smooth-last command as a dataset hook (peep dataset-hook): from this point on, all the datasets get smoothed ✨

Corresponding command: smooth(integer)

  • --smooth-last INTEGER β€” smooths the data with a simple (naive even) gaussian filter. perfect for those 'lines to guide the eye' moments πŸ’–

Corresponding command: smooth-last(integer)

  • --sort β€” installs the sort-last command as a dataset hook (peep dataset-hook): all subsequent datasets get sorted according to their X values. so organized ✨

Corresponding command: sort()

  • --sort-last β€” sorts the last dataset pushed unto the stack according to X values. can be used as a filter πŸ¦‹

Heads up: this command sorts in-place.

See also sort.

Corresponding command: sort-last()

  • --trim INTEGER β€” installs the trim-last command as a dataset hook (peep dataset-hook): all subsequent datasets get trimmed to keep only every *n*th point.

Corresponding command: trim(integer)

  • --trim-last INTEGER β€” keeps only one out of every ? data point on the last dataset pushed unto the data stack. lowkey a lifesaver when your data has too many points and you're tryna avoid heavy PDF files that take ages to display with no additional benefits πŸ’€

Be warned: this operation is very crude and does not average data.

See also trim.

Corresponding command: trim-last(integer)


πŸ’œ General commands πŸ’œ

General scope commands

  • --debug β€” with this on, ctioga2 writes a whole lot of debugging information. you probably won't need this unless you're planning to file a bug report or tackle a problem yourself πŸ”₯
Be warned that it will slow down the processing of ctioga2 very significantly (up to hundreds of times slower), especially if you're not redirecting the output to a file. no cap, it gets rough 😭

Corresponding command: debug()

  • --echo β€” writes the whole command-line used to standard error, quoted in such a way that it should be usable directly for copy/paste. chef's kiss for reusing commands πŸ’…

Corresponding command: echo()

  • -e, --eval COMMANDS β€” runs the given strings as commands, exactly as if they were given from a command file ✨

Corresponding command: eval(commands)

  • -f, --file FILE β€” reads the file and runs the commands found in it, using the ctioga language πŸŽ€
ctioga2 -f my_file.ct2

If the /log is on, then all messages are written to a -log.txt file instead of to the terminal.

Optional arguments: log

Corresponding command: include(file,option=...)

  • -h, --help β€” prints help about the short and long options available when run from the command-line 🫢

Optional arguments: pager

Corresponding command: command-line-help(,option=...)

  • --help-on TEXT β€” prints help about the given command πŸ¦‹

Corresponding command: help-on(text)

  • --[no-]pause β€” when this is on, the program will ask for confirmation before finishing, whenever errors or warnings have been shown. this is especially useful on windows or other environments where the terminal shuts down the second ctioga2 finishes 😭

Corresponding command: pause(boolean)

  • --print-instructions β€” writes the list of all the instructions run so far.

ngl this is not very helpful for now, possibly πŸ’€

Corresponding command: print-instructions()

  • --ruby-run FILE β€” reads the file and runs the Ruby code found inside, a bit like Ruby would do with the require command β€” except that ctioga2 does not follow Ruby's file searching rules: you have to specify the full path πŸ‘‘

Corresponding command: ruby-run(file)

  • --set TEXT TEXT β€” sets the value of the variable (first argument) to the given second argument. no parsing is done, it just does the thing πŸ’…

Corresponding command: set(text,text)

  • -v, --verbose β€” with this on, ctioga2 outputs quite a fair amount of informative messages 🌸

Corresponding command: verbose()

  • -V, --version β€” prints the version of ctioga in use ⭐

Corresponding command: version()


🌟 TYPES 🌟

most of the commands accept one or more arguments, and those arguments have different types. here's what all those types actually mean, bestie 🫢

aligned-point

a point together with alignment specifications, used to place elements like legends that need to know about alignment πŸŽ€

the first two letters represent the alignment:

  • t for top
  • b for bottom
  • c for center
  • l for left and
  • r for right

those letters can optionally be followed by the exact location of the point in frame coordinates. if you don't provide it, a reasonable default value gets chosen ✨

Examples:

  • tl is a point at the top left of the frame aligned to the top and left;
  • cl:0.1,0.6 is vertically centered and aligned to the left, and positioned 10% from the left and 60% from the bottom.

alignment

vertical alignment for text. can be one of:

  • t or top
  • c, center, m or midheight (vertically centered)
  • B, Baseline or baseline to align at the baseline
  • b or bottom

aspect-ratio

how the draw-image command respects the original image aspect ratio:

  • ignore (the default) ignores the original aspect ratio
  • expand expand the original box to respect aspect ratio
  • contract contract the original box to respect aspect ratio

average-mode

how the avg-dup-last command works:

  • naive or average (the default) treats all columns (values and error bars) the same way, and averages everything
  • stddev ignores the original errors, and sets the new errors to the standard deviation of the values

axis

the name of the axis of a plot. it can be:

  • left, top, bottom or right;
  • x, xaxis, y, yaxis, which return one of the above depending on the preferences of the current plot (see xaxis and yaxis to change them);
  • one of the named axes, such as the ones created by new-zaxis.

axis-decoration

kinds of decoration on an axis line, such as nothing, lines, ticks, tick labels. possible values:

  • hidden, off, no, none: no axis at all
  • line: only a line
  • ticks: only ticks
  • major: only major ticks
  • major-num: major ticks along with their labels
  • full: major ticks and labels + minor ticks

axis-or-auto

same thing as axis, or auto to let the style factory handle it automatically πŸ’…

bijection

a pair of functions of x specifying a bidirectional coordinate transformation, separated by a double colon (::), in the order from::to πŸ¦‹

each of the functions must be valid Ruby code β€” these are not exactly mathematical functions, and in particular Ruby does not like floats that are missing digits on either side of the dot: for instance, .3 and 1. are not valid. sorry 😭

in most of the usual cases, the coordinate transform is an involution, meaning from and to are the same function (this is the case for a/x). in that case, you can just omit the second function ✨

boolean

yes or no. that's it, that's the whole type πŸ’€

boolean-or-auto

same thing as boolean, or auto to let the style factory handle it automatically 🌸

box

the specification for a box, such as an inset. it can be a grid specification, like grid:0,1. for this to work, a grid must have been set up beforehand using setup-grid πŸ‘‘

it can also be an aligned-point together with a width and optionally a height in frame coordinates, such as:

  • cc:0.3: a box in the center of size 30% width and 30% height;
  • bl:0.1,0.2:0.7,0.2 β€” a box that starts from the point sitting 10% from the left and 20% from the bottom, with a width of 70% and a height of 20%. box era fr πŸ“¦
  • box-shape β€” the shape of a box. It can be:
    • square for a plain square box
    • round for a rounded box
  • color β€” a color. It comes in three forms, pick your fighter:
  • color-or-auto β€” literally the same as color, or auto to let the style factory handle it automatically. let the factory cook πŸ‘‘
  • color-or-false β€” a color, or none to say that nothing should be drawn.
  • color-or-false-or-auto β€” same thing as color-or-false, or auto to let the style factory handle it automatically.
  • color-or-false-set β€” sets of color-or-false
  • color-set β€” sets of color
  • colormap β€” a Z color map. It takes the form Color1--Color2--Color3.... All colors can optionally be followed by a number. For instance, for Red--Blue--Pink--Green, the colors are evenly spaced. In the case of Red--Blue(0.1)--Pink(0.2)--Green, the Blue to Pink stretch is located between Z values 0.1 and 0.2. gradient queen energy 🌈
    • If a prefix hls: or wheel: is present, then linear interpolation is done in the HLS colorspace instead of the RGB one (the default).
    • If a suffix :sym:value is present, then the colormap is symmetric around that value.
    • It is also possible to directly use a color-set, in which case everything works as if the colors of the color-set had been given directly, without Z values.
  • colormap-or-auto β€” same thing as colormap, or auto to let the style factory handle it automatically.
  • commands β€” ctioga2 commands, such as the ones that could be found in command files.
  • compute-dx β€” this controls how the histograms treat unevenly spaced X values:
    • none: ignores the problem, and treats the points as if they were all evenly spaced
    • min, mindx: considers that all slots have the size of the smallest variation of X values
  • cumulative-histograms β€” how to specify that histograms should be stacked. Can be:
    • a positive number, in which case the following histograms will be added to the numbered one (0 is the first)
    • no/false, in which case the following histograms are not stacked
    • next, in which case the following histograms get stacked on a new slot
  • data-point β€” a point from an already-loaded Dataset. You have two ways to choose the point:
    • @13 takes the 13th point in the last dataset
    • 0.2 takes the point closest to 20% of the dataset
    • If you need another dataset than the last one, give its number or name within brackets: {-2}0.2 is the point closest to the 20% of the one-before-last dataset.
  • dataset β€” one expandable dataset. just one, bestie ✨
  • dimension β€” a dimension, in absolute units, or in units of text height, figure, frame or page coordinates. It's in the form value unit where value is a number and unit can be one of pt, bp, in, cm (absolute units, same meaning as in TeX), dy (1.0 dy is the height of a text line), figure or f (for figure coordinates, i.e. the coordinates of the plot), frame or F (1.0 frame is the full size of the current subplot) and page or p (1.0 page is the whole height/width of the output file).
    • It can also be auto, which is 1.0 in frame units (ie the width or the height of the current plot).
  • dimension-or-no β€” a dimension, or no or none.
  • drawing-spec β€” a ctioga 1 --draw specification.
  • file β€” a file name.
  • fill-pattern β€” a fill pattern, one of:
    • lines:angle,distance,width
    • vlines:distance,width
    • hlines:distance,width
    • xlines:distance,width,angle
    • solid or plain
    • The first three are lines: arbitrary orientation for lines, vertical for vlines and horizontal for hlines. xlines correspond to crossed perpendicular lines (the angle is 45 by default). For these styles, the distance and width are all optional and correspond respectively to the distance between the lines and the line width.
    • solid or plain correspond to solid fill (i.e. not patterned).
  • fill-pattern-or-auto β€” same thing as fill-pattern, or auto to let the style factory handle it automatically.
  • fill-until β€” how to close the path of a curve to fill it. Can be:
    • bottom, top, left, right to fill until the named side of the plot
    • axis or xaxis to fill until the X axis (ie y = 0)
    • yaxis to fill until the Y axis (ie x = 0)
    • x:value or x=value to fill until the given X value
    • y:value or y=value to fill until the given Y value
    • close for just closing the path (doesn't look good in general) ngl don't πŸ™ˆ
    • none for no fill
  • fill-until-or-auto β€” same thing as fill-until, or auto to let the style factory handle it automatically.
  • fill-until-set β€” sets of fill-until
  • float β€” a floating-point number.
  • float-list β€” a list of space-separated or comma-separated floating point numbers.
  • float-or-auto β€” same thing as float, or auto to let the style factory handle it automatically.
  • float-or-false β€” a floating-point number, or none.
  • float-or-false-or-auto β€” same thing as float-or-false, or auto to let the style factory handle it automatically.
  • float-range β€” a beginning:end range.
  • float-set β€” sets of float
  • frame-margins β€” margins around a plot, ie the distance from the side of the plot to the corresponding side of the container (most likely the whole PDF). It can take three forms:
    • dimension (applies to all sides)
    • left_*right, *top_*bottom*
    • left, right, top, bottom
    • Each of these elements is a valid dimension.
    • It can also be auto, in which case the position of the margins is computed automatically to accomodate the various labels/ticks.
  • integer β€” an integer.
  • integer-list β€” a list of space-separated or comma-separated integers
  • integer-or-auto β€” same thing as integer, or auto to let the style factory handle it automatically.
  • internal-format β€” output format for internals. the inner workings, iykyk
  • justification β€” horizontal alignment of the (with respect to its location). Can be one of:
    • l or left
    • c, center
    • r, right
  • label β€” the name of an label. It can be:
    • title to mean the current plot's title.
    • axis_tick or axis_ticks or simply axis, where axis is a valid axis. It designates the ticks of the named axis.
    • axis_label, same as above but targets the label of the named axis.
  • latex-font β€” a LaTeX font. @todo document ! the author said what they said πŸ’€
  • level β€” a level on a XYZ map (that is, just a Z value).
  • line-cap β€” a line cap style, i.e. how the line extends beyond its last point. Available choices:
    • round (extends as a half circle default)
    • butt (does not extend at all)
    • square (extends as a half square)
  • line-cap-or-auto β€” same thing as line-cap, or auto to let the style factory handle it automatically.
  • line-style β€” a line style, which is one of solid, dots, dashes, small_dots, a series of comma-separated numbers which are the length of the strokes and gaps, or no, none or off to mean no line.
  • line-style-or-auto β€” same thing as line-style, or auto to let the style factory handle it automatically.
  • line-style-set β€” sets of line-style
  • location β€” a position on the plot, referenced with respect to the sides. Can be:
    • left
    • right
    • top
    • bottom
    • x0, for the x = 0 position
    • y0, for the y = 0 position
    • In addition, there will one day be the possibility to specify an offset from these locations. But that is still something to do. someday bestie, someday 😭
  • marker β€” a Tioga Marker, ie either a name from the list at http://tioga.rubyforge.org/doc/Tioga/MarkerConstants.html, such as Box, Star, Spade or two or three comma-separated numbers, font, number and width. font defines the font (standard PDF fonts, from 1 to 14), number the number of the character within the font (between 0 and 255), and if width is specified, the marker is stroked and not filled, and the number is the line width for the stroke.
  • marker-or-auto β€” same thing as marker, or auto to let the style factory handle it automatically.
  • marker-set β€” sets of marker
  • object β€” a named object (whose name was given using the /id= option to the appropriate command).
  • objects β€” a list of comma-separated objects, or a class specification starting with a .
  • partial-float-range β€” a beginning:end range, where either of the endpoints can be ommitted.
  • pdf-font β€” a number between 1 and 14 that designates one of the 14 standard PDF fonts. (see for instance http://tioga.rubyforge.org/doc/classes/Tioga/MarkerConstants.html for more information).
  • point β€” a given point on a figure.
  • regexp β€” a plain string or a regular expression (the latter being enclosed within /.../).
  • region-side β€” within a region, designates the position of the curve with respect to the region:
    • above
    • below
    • ignore if this curve is not to be taken into account
  • region-side-or-auto β€” same thing as region-side, or auto to let the style factory handle it automatically.
  • region-side-set β€” sets of region-side

stored-dataset πŸ—‚οΈ

A dataset that's already been loaded, bestie. It's literally one of these three things:

  • A number β€” in which case it's the index inside the stack. 0 is the first one that got pushed onto the stack (the oldest dataset), 1 is the second, -1 is the last one, -2 is the one before the last, and so on and so forth. (it works just like Ruby's arrays, iykyk πŸ’…)
  • The name of a named dataset.
  • # followed by the id of a plot element.

style-aspect 🎨

This type decides which aspect of the style of a xy-parametric plot gets controlled by a certain Z value. She can be any of these:

  • marker_color β€” the color for the markers ✨
  • marker_size/marker_scale β€” the size of the markers πŸ“

text πŸ“

Plain text. That's it. That's the whole vibe.


text-adjust-mode πŸ”

The mode for text size adjustment, okay?

  • old β€” for the old style heuristics πŸ‘΅
  • both β€” for both the old style heuristics and the measures, taking whichever of those is the biggest
  • measure β€” for only measured text size (but watch out for axis ticks ! 😭)

text-align ↔️

Horizontal alignment for text within its box. Only of use for texts with a given text width. Can be one of:

  • l or left
  • c, center
  • r, right
  • no or none to not issue aligning commands, in which case you get full LaTeX-justified paragraphs (probably with a lot of hyphens 🫠).

text-list πŸ“‹

A list of comma-separated texts. If you must include a comma inside the texts, then use || as a separator instead. slay ✨


text-or-auto πŸ€–

Same thing as text, or auto to let the style factory handle it automatically. Let her cook πŸ’…


text-set 🧺

Sets of text. Very set. Much text.


ticks-side πŸ“

On what side of an axis line are the ticks positioned:

  • inside β€” on the inside
  • outside β€” on the outside
  • both β€” on both the inside and the outside

🌸 ENVIRONMENT VARIABLES 🌸

If the environment variables CTIOGA2_PRE or CTIOGA2_POST are set, they get split into words according to shell rules (peep the Shellwords.shellwords ruby function for more info, bestie) and then prepended or appended to the command-line arguments. And they don't leave any trace in the actual command-line β€” so, for instance, --echo won't be aware of them. sneaky πŸ˜Άβ€πŸŒ«οΈ


πŸ‘‘ AUTHOR πŸ‘‘

ctioga2 was written by Vincent Fourmond. Tioga was written by Bill Paxton. legends only 🫢


πŸ’€ BUGS πŸ’€

ctioga2 is most certainly not bug-free. no cap. You can use the facility at rubyforge.org to report any bug you notice:

http://rubyforge.org/tracker/?group_id=8218

You can also use that same facility for feature requests and to provide use with patches πŸ’–

Alternatively, you can use the forums at

http://rubyforge.org/forum/?group_id=8218

or the ctioga2-users@rubyforge.org mailing list to report any kind of problems or suggestions. we're listening πŸŽ€


πŸ¦‹ SEE ALSO πŸ¦‹

xpdf(1), pdflatex(1), open(1), gnuplot(1), ctioga(1) (the original ctioga) β€” yes she has a predecessor and she's iconic too πŸ‘‘

The original tarball includes an examples/ with various examples demonstrating different features of ctioga2, and in particular the different ways to use it: command-line or command-file.

It also includes a tests/ directory containing test shell scripts. Runnning these shell scripts should give you a decent idea of ctioga2's possibilities while assuring that it did install properly. (typo in the original, we keep it, we respect the original 😌)

Useful information, documentation and most up-to-date news can be found at ctioga2's website, at

http://ctioga2.rubyforge.org/

More information about Tioga and its rdoc documentation can be found at

http://www.kitp.ucsb.edu/~paxton/tioga.html

okay bestie that's the WHOLE page, you made it to the end, and honestly? ate. πŸ’…βœ¨

This was Version 0.14.1, dated Tue 29 Mar 22:54:55 CEST 2016, and it's the CTIOGA2(1) manual page. go plot something gorgeous πŸŒˆπŸ’–
πŸ“¦ where this page comes from