Я могу предложить следующий Ticks
хак:
pl = Plot[Sin[x], {x, 0, 10}];
Reap[Rasterize[Show[pl, Ticks -> {Sow[{##}] &, Sow[{##}] &}],
ImageResolution -> 1]][[2, 1]]
=> {{-0.208333, 10.2083}, {-1.04167, 1.04167}}
Хитрость в том, что реальное PlotRange
определяется FrontEnd, а не ядром.Поэтому мы должны заставить FrontEnd визуализировать графику, чтобы оценить функции тиков.Этот хак дает полный PlotRange
с явным добавлением PlotRangePadding
.
Более общее решение, учитывающее возможность того, что pl
имеет нестандартное значение параметра DisplayFinction
и что для параметра Axes
может быть установлено значение False
:
completePlotRange[plot_] :=
Last@Last@
Reap[Rasterize[
Show[plot, Ticks -> (Sow[{##}] &), Axes -> True,
DisplayFunction -> Identity], ImageResolution -> 1]]
На странице документации для PlotRange
в разделе «Дополнительная информация» можно прочитать важную заметку о AbsoluteOptions
: «AbsoluteOptions
дает явную форму PlotRange
спецификаций при Automatic
настройки даны"(подсветка моя).Таким образом, кажется, что Документация не гарантирует, что AbsoluteOptions
даст правильные значения для PlotRange
, когда это не Automatic
для всех координат.