Как определить PlotRange для включения всей графики?

Given Graphics объект, как определить диапазон координат, необходимый для включения всей графики? В основном мне нужно что-то вроде того, что делает Show по умолчанию, но я хочу явно указать PlotRange , PlotRangePadding и ImagePadding .

Пример, два Show ниже должны отображать одинаковую

g = Graphics[{Thickness[1], CapForm["Round"], Line[{{0, 0}, {1, 1}}]}];
Show[g]
Show[g, PlotRange -> getPlotRange[g], PlotRangePadding->getPlotRangePadding[g], ImagePadding->getImagePadding[g]]

Мотивацию: исправление диаграмм в , этом вопросе

Обновление : AbsoluteOptions дает мне PlotRange , но не два других варианта. Явное указание ImagePadding-> Automatic изменяет внешний вид, хотя по умолчанию он предположительно Automatic .

Два изображения ниже отображаются по-разному, и я не понимаю, почему

g = Graphics[{Thickness[1], CapForm["Round"], Line[{{0, 0}, {1, 1}}]}];
Show[g]
Show[g, Sequence @@ AbsoluteOptions[Show[g]]]

Обновление 2 : Похожая проблема была поднята год назад, но решения не были предложены и не исправлены в системе Mathematica 8.0. Подводя итог

  1. Невозможно воспроизвести Show [g] выше с явной установкой PlotRange
  2. Невозможно получить абсолютный ImagePadding , используемый Show [g]
  3. Show [g, PlotRange-> Automatic] выглядит иначе, чем Show [g]
  4. AbsoluteOptions может дать неверный результат для ] PlotRange

34
задан Community 23 May 2017 в 12:23
поделиться