Wolfram mathematica 组合多个图形对象
考虑以下简单示例:Wolfram mathematica 组合多个图形对象,wolfram-mathematica,Wolfram Mathematica,考虑以下简单示例: 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] 这将产生以下两个数字 现在我想把它们两个对齐,一个在另一个上面,没有任何额外的
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]
,返回一个对象,在较短的图形周围有额外的空格(为了说明这一点,我在所有对象中都打开了框架)
我找不到一种方法来强制每个列“cells”与图像大小垂直匹配(注意:我知道在我的示例中,第二个图中有额外的水平空白,这是有意的。我只是试图使其垂直匹配)。我试着使用间距
选项,但仍然不令人满意。因此,我的第一个问题是:“有没有一种方法可以使用GraphicsGrid
或GraphicsColumn
或任何其他方法来实现这一点?”
另一种方法是使用imageassembly
如下:
ImageAssemble[Map[FullGraphics, {{p1}, {p2}}, {2}]]
这正是我想要的,但给出了一个光栅化的图像(下面是一个屏幕抓图,因为保存的文件分辨率要差得多)
我的实际数字是整洁的矢量图,我甚至不想考虑光栅化它们,不管分辨率有多高。因此,我的第二个问题是:“有没有办法从imageassembly
获取矢量图形输出?”如果有帮助,我正在使用Mma7
并将图形保存为Export[“filename.pdf”,expr]
我知道,对于所示的示例,使用
LevelScheme
可以实现这一点。但是,并非所有打印功能都与LevelScheme
兼容,并且不会在所有情况下都起作用 结果必须是图形吗?如果没有,您可以使用常规列:
Column[{p1, p2}, Spacings -> 0]
基于Brett的答案,这可能是您想要的:
FullGraphics@GraphicsGrid[{{p1}, {p2}}, Spacings -> 0]
方法1:
- 使用
李>imageassembly[{image1},{image2}….]
- 可以使用
在每个图像周围添加一些空间:ImagePad
ImageAssemble[ {ImagePad[image1,m1]}, {ImagePad[image2,m2]},...]
- 注意-所有图像的大小必须相同(使用
,并适当选择ImageDimensions
,m1
…)m2
- 定义维度行x列的图像数组,如“myphotos”
imageassembly[myphotos]
GraphicsColumn
的行为不同吗?Behvaio是故意的吗?我认为GraphicsColumn
正在强制执行ItemAspectRatio
选项,我还没有找到关闭它的方法。(事实上,我不确定为什么GraphicsGrid
没有遇到同样的问题。)一般来说,我喜欢使用Grid
而不是GraphicsGrid
@Brett:GraphicsGrid
也有同样的问题。请参阅我在对向导先生的回答中提供的内容。@BrettItemAspectRatio
甚至没有列在GraphicsColumn
doc页面中。它不是简单地与AspectRatio
(可设置)除以绘图数量有关吗?@Sjoerditemspectratio
是什么导致@yoda的第二张图片中的两个框架部分具有相同的形状,而不是更接近单个图形形状的形状。它没有文档记录,但在选项[GraphicsColumn]
中GraphicsColumn
和GraphicsRow
是GraphicsGrid
的特例。(有趣的是,列
与网格
相关,但行
与之无关。)@Wizard:正如我在问题中提到的,我确实尝试过在图形列
中使用间距(和图形网格
,尽管我没有提到这一点),但是没有像Brett的解决方案那样提供紧凑的安排。一个例子说明了我的意思。或者,也许?间距->{0,-10}@TomD:然后它变得非常主观,我不得不到处玩,每次都找到最合适的位置。而且,这并不能完全解决问题。如果你通过缩小它们之间的距离来消除它们之间的间距,这会增加顶部和底部的空白。@yoda,你说:“返回一个对象,在较短的数字周围有额外的空白”,我认为这会改善这一点。我同意,如果您不需要使用GraphicsGrid/GraphicsColumn,那么通用表单(网格/列)通常工作得更好。