Displaying exploded axes with (New) Graphics
While I’m out of the office this week, here’s another hacktastic example for your enjoyment: displaying exploded axes in a (New) Graphics
Start by making a plot with axis labels and ticks that point outward, and include some extra room around the margins:
p = plot(/test, margin=0.2, xtickdir=1, ytickdir=1)
Next, get the x- and y-axis ranges:
xr = max(p.xrange, min=min_x) – min_x
yr = max(p.yrange, min=min_y) – min_y
Last, nudge the four axes of the plot outward from their default locations by some fraction of the x- or y-axis range. There are three pieces of information I’ll use for this:
- Recall that children of a NG plot can be referenced with a hash syntax.
- Plot axes are indexed: 0=bottom, 1=left, 2=top, 3=right, and they have default NAME properties that reflect this.
- The location of each axis can be set by its LOCATION property, which uses data coordinates.
Here’s the code:
frac = 0.05 ; tunable parameter
p['axis0'].location -= [0.0, frac*yr, 0.0]
p['axis1'].location -= [frac*xr, 0.0, 0.0]
p['axis2'].location += [0.0, frac*yr, 0.0]
p['axis3'].location += [frac*xr, 0.0, 0.0]
Note that adding x- and y-axis titles to this plot will work as expected, but a plot title should be created and placed with TEXT:
p.xtitle = 'Time'
p.ytitle = 'Amplitude'
t = text(0.5, 0.9, 'Damped Oscillator', alignment='center')
Here’s a screenshot of the result from the Windows side of my laptop: