7000 Rate this article:
No rating

Displaying exploded axes with (New) Graphics


Here’s another hacktastic example for your enjoyment: displaying exploded axes in a (New) Graphics plot. 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:

  1. Recall that children of a NG plot can be referenced with a hash syntax.
  2. Plot axes are indexed: 0=bottom, 1=left, 2=top, 3=right, and they have default NAME properties that reflect this.
  3. 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: An example of exploded axes in NG