考虑以下简单示例:
f[x_] = Sin[5 x] + Sin[3 x];
p1 = PolarPlot[f[x], {x, 0, 2 Pi}, ImageSize -> 50 {5, 2.5},
Frame -> True]
p2 = PolarPlot[f'[x], {x, 0, 2 Pi}, ImageSize -> 50 {5, 3},
Frame -> True]
产生以下两个数字
现在我想将它们中的两个对齐,一个在另一个上面,没有任何额外的间隙。执行FullGraphics@GraphicsColumn[{p1, p2}, Frame -> All]
,返回一个在较短的图形周围有额外空白区域的对象(我已经在所有对象中打开了框架来说明这一点)
我找不到强制每个列“单元格”垂直适合图像大小的方法(注意:我知道在我的例子中,第二个图中有额外的水平空格,这是故意的。我只是试图紧贴它。我尝试使用Spacings
选项,但这仍然不能令人满意。所以,我的第一个问题是:“有没有办法可以使用GraphicsGrid
或GraphicsColumn
或通过任何其他方式执行此操作?”
另一种方法是像这样使用ImageAssemble
:
ImageAssemble[Map[FullGraphics, {{p1}, {p2}}, {2}]]
我做了我想要的,但是给出了一个栅格化的图像(以下是一个屏幕抓取,因为保存的文件的分辨率要差很多)。
我的实际数字是整洁的矢量图,我甚至不想考虑光栅化它们,无论分辨率有多高。所以,我的第二个问题是:“有没有办法从ImageAssemble
获得矢量图形输出?”如果有帮助,我正在使用Mma7
并将我的图片保存为Export["filename.pdf",expr]
。
我知道可以使用LevelScheme
来显示示例。但是,并非所有绘图功能都与LevelScheme
兼容,并且不适用于所有情况。
答案 0 :(得分:4)
结果必须是图形吗?如果没有,您可以使用常规列:
Column[{p1, p2}, Spacings -> 0]
答案 1 :(得分:2)
根据Brett的回答,这可能是你想要的:
FullGraphics@GraphicsGrid[{{p1}, {p2}}, Spacings -> 0]
答案 2 :(得分:0)
方法1:
ImageAssemble[{image1},{image2}....]
。 可以使用ImagePad
在每张图片周围添加一些空间:
ImageAssemble[ {ImagePad[image1,m1]}, {ImagePad[image2,m2]},...]
注意 - 所有图片的大小必须相同(使用ImageDimensions
,并选择m1
,m2
......)。
方法2:
定义维度行x cols的图像数组,例如“myphotos”
ImageAssemble[myphotos]