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
    …)

方法2:

  • 定义维度行x列的图像数组,如“myphotos”

    imageassembly[myphotos]


@Brett:它工作灵活,可以作为向量很好地导出。您知道为什么
GraphicsColumn
的行为不同吗?Behvaio是故意的吗?我认为
GraphicsColumn
正在强制执行
ItemAspectRatio
选项,我还没有找到关闭它的方法。(事实上,我不确定为什么
GraphicsGrid
没有遇到同样的问题。)一般来说,我喜欢使用
Grid
而不是
GraphicsGrid
@Brett:
GraphicsGrid
也有同样的问题。请参阅我在对向导先生的回答中提供的内容。@Brett
ItemAspectRatio
甚至没有列在
GraphicsColumn
doc页面中。它不是简单地与
AspectRatio
(可设置)除以绘图数量有关吗?@Sjoerd
itemspectratio
是什么导致@yoda的第二张图片中的两个框架部分具有相同的形状,而不是更接近单个图形形状的形状。它没有文档记录,但在
选项[GraphicsColumn]
GraphicsColumn
GraphicsRow
GraphicsGrid
的特例。(有趣的是,
网格
相关,但
与之无关。)@Wizard:正如我在问题中提到的,我确实尝试过在
图形列
中使用
间距(和
图形网格
,尽管我没有提到这一点),但是没有像Brett的解决方案那样提供紧凑的安排。一个例子说明了我的意思。或者,也许?间距->{0,-10}@TomD:然后它变得非常主观,我不得不到处玩,每次都找到最合适的位置。而且,这并不能完全解决问题。如果你通过缩小它们之间的距离来消除它们之间的间距,这会增加顶部和底部的空白。@yoda,你说:“返回一个对象,在较短的数字周围有额外的空白”,我认为这会改善这一点。我同意,如果您不需要使用GraphicsGrid/GraphicsColumn,那么通用表单(网格/列)通常工作得更好。