I am trying to extract the ticks settings of a plot to re-design the plot in a custom plot function (effectively, giving the plot a custom design but automatically). I think the ticks should be accessible using AbsoluteOptions
. However, in this example:
plot = Plot[Sin[x], {x, 0, 20}]
xticks = First[Ticks /. First[AbsoluteOptions[plot, Ticks]]]
the major ticks on the x-axis of the plot are at 0,5,10,15,20. xticks
, on the contrary, looks like:
{
{0., 0., {0.00625, 0.}, {GrayLevel[0.], AbsoluteThickness[0.25]}},
{2.5, 2.5, {0.00625, 0.}, {GrayLevel[0.], AbsoluteThickness[0.25]}},
{5., 5., {0.00625, 0.}, {GrayLevel[0.], AbsoluteThickness[0.25]}},
{7.5, 7.5, {0.00625, 0.}, {GrayLevel[0.], AbsoluteThickness[0.25]}},
{10., 10., {0.00625, 0.}, {GrayLevel[0.], AbsoluteThickness[0.25]}},
{12.5, 12.5, {0.00625, 0.}, {GrayLevel[0.], AbsoluteThickness[0.25]}},
{15., 15., {0.00625, 0.}, {GrayLevel[0.], AbsoluteThickness[0.25]}},
{17.5, 17.5, {0.00625, 0.}, {GrayLevel[0.], AbsoluteThickness[0.25]}},
{20., 20., {0.00625, 0.}, {GrayLevel[0.], AbsoluteThickness[0.25]}},
{0.5, "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}},
{1., "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}},
{1.5, "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}},
{2., "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}},
{3., "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}},
{3.5, "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}},
{4., "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}},
{4.5, "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}},
{5.5, "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}},
{6., "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}},
{6.5, "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}},
{7., "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}},
{8., "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}},
{8.5, "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}},
{9., "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}},
{9.5, "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}},
{10.5, "", {0.00375, 0.}, {GrayLevel[0.],
AbsoluteThickness[0.125]}},
{11., "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}},
{11.5, "", {0.00375, 0.}, {GrayLevel[0.],
AbsoluteThickness[0.125]}},
{12., "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}},
{13., "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}},
{13.5, "", {0.00375, 0.}, {GrayLevel[0.],
AbsoluteThickness[0.125]}},
{14., "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}},
{14.5, "", {0.00375, 0.}, {GrayLevel[0.],
AbsoluteThickness[0.125]}},
{15.5, "", {0.00375, 0.}, {GrayLevel[0.],
AbsoluteThickness[0.125]}},
{16., "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}},
{16.5, "", {0.00375, 0.}, {GrayLevel[0.],
AbsoluteThickness[0.125]}},
{17., "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}},
{18., "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}},
{18.5, "", {0.00375, 0.}, {GrayLevel[0.],
AbsoluteThickness[0.125]}},
{19., "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}},
{19.5, "", {0.00375, 0.}, {GrayLevel[0.], AbsoluteThickness[0.125]}}
}
I believe the rows with an entry in the second column should be the major ticks, where the second column is the label. But in the plot there are no ticks at 2.5, 7.5, and so on (neither major nor minor ticks). So why are those listed in the AbsoluteOptions of the plot? Or is there another proper way to extract the actually displayed ticks?
Plot[Sin[x], {x, 0, 20}, Evaluate@AbsoluteOptions[plot, Ticks]]
. $\endgroup$AbsoluteOptions
is deprecated. You can try the CustomTicks package. $\endgroup$Automatic
settings, if you manually specify ticks and then read them throughAbsoluteOptions
you get the actual value. Tryplot = Plot[Sin[x], {x, 0, 20}, Ticks -> {Range[0, 20, 5], Range[-1, 1, .5]}]
$\endgroup$