给定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中仍未修复。总结如下:
- 没有办法使用显式设置的
PlotRange
来重现上面的Show[g]
- 没有办法获取
Show[g]
所使用的绝对ImagePadding
Show[g,PlotRange->Automatic]
与Show[g]
看起来不同AbsoluteOptions
对于PlotRange
可能会给出错误的结果