Here are ways to tweak various things about axes and things.
It is possible to use different axes for different curves in a single
plot, using --y2
or --x2
:
ctioga2 -X --math 'sin(x)' 'cos(x)' -y '$y$ values' \ --y2 '0.5 * x**2' -y '$y_2$ values' \ -x '$x$ values' /color Blue
This example also shows how to define the label for the current X and
Y axes; the -x
and -y
commands provide many options to fine-tune
the look of the labels.
It is possible to define the X and Y ranges of the plot thus:
ctioga2 -X --math 'sin(x)' 'cos(x)' \ --xrange -20: --yrange -0.8:2
Alternatively, it is possible to use --margin
to leave a certain
fraction of the plots around the data points; to make the reading
easier. In this case, we leave 3%:
ctioga2 -X --math --margin 0.03 \ 'sin(x)' 'cos(x)'
It is possible to use a log scale by passing the --xlog
or --ylog
commands:
ctioga2 -X --math --ylog --margin 0.03 \ '1 + x**2' '1 + x**4' '1 + x**6'
It is possible to change the look of each of the sides of the plot
individually using the --axis-style
and the companion
--label-style
commands that set the style of the axis and of the
labels respectively.
ctioga2 -X --math 'sin(x)' 'cos(x)' \ --top off --bottom major-num /stroke_color Blue \ --axis-style right /decoration major \ --label-style bottom /color Blue
Starting from ctioga2
version 0.6
, it is possible to control the
appearance and position of major ticks and tick labels, through the
use of the ticks
command or through various options to the
axis-style
command:
math /xrange 1e3:7e5 margin 0.07 plot log(x) ticks bottom /format "%.1e"
The /format
argument to the ticks
command is interpreted
as a
sprintf
format specification.
You have basically three options to control the position of the axes
ticks. You may specify an approximate number of major ticks for the
whole graph, specify the difference between two successive ticks, and
finally specify by hand the position of all ticks, all this using the
ticks
command. First, difference and number:
math margin 0.03 plot "(1 + 1e-3 * x**6)**0.5" top line right line ticks bottom /minor-number 3 /major-number 7 ticks left /minor-delta 2 /major-delta 5
For the bottom axis, this says that there should be at least 7 major ticks and exactly 3 minor ticks between each major one. For the left axis, minor ticks are placed every multiple of two while the major ticks are placed every multiple of 5. Note that there is no need for the minor ticks to be evenly spaced between the major ticks.
While these possibilities will be enough for most cases where
@ctioga2@’s default values don’t suit you, you can have even more
control by specifying directly the position of the ticks using the
/major
and /minor
options to the ticks
command:
math /xrange 1e3:7e5 margin 0.07 plot log(x) top line ticks bottom /minor 1e5,1.5e5,2e5,3.5e5,5e5,6e5 /major 0.5e5,2.5e5,4e5,5.5e5 \ /format="%.1e" background-lines bottom Gray /style Dots
See how the background lines follow the position of the major ticks.
Here, we disabled the ticks on the top axis using top
as
they would still follow the usual convention, which would have a
disconcerting effect. A simple way to take care of that is to use
variables:
minor = 1e5,1.5e5,2e5,3.5e5,5e5,6e5 major = 0.5e5,2.5e5,4e5,5.5e5 math /xrange 1e3:7e5 margin 0.07 plot log(x) ticks bottom /minor $(minor) /major $(major) /format="%.1e" ticks top /minor $(minor) /major $(major) background-lines bottom Gray /style Dots
Using the /labels
option, you can even specify the exact label for
all the ticks. The price to pay for that level of control is that you
must provide manually the location for all the major ticks (and the
minor ones if you want them to show up too).
math /xrange -2:2 margin 0.02 plot sin(3.141592*x) top line ticks bottom /minor -1.75,-1.25,-0.75,-0.25,0.25,0.75,1.25,1.75\ /major -2,-1.5,-1,-0.5,0,0.5,1,1.5,2 \ /labels='$-2\pi$,$-\frac{3\pi}{2}$,$-\pi$,$-\frac{\pi}{2}$,\ 0,$\frac{\pi}{2}$,$\pi$,$\frac{3\pi}{2}$,$2\pi$'
With ctioga2
, making non-linear additional axes is just a matter of
specifying the transformation between the linear axis and the
non-linear one, using the /transform
option to the axis style
command (here --top
):
math /xrange 3e-2:5e-2 margin 0.07 top major-num /transform 8.314/x /axis-label-text='$T$ (K)' xlabel '$1/(RT)$ (mol/J)' ylog true plot exp(-5e2*x) plot 0.2*exp(-5e2*x)
In the general case, you have to specify the formula for changing the
from linear to non-linear and back, unless it is an involution
(which is the case here). Separate the formulas with a :
.