Рассмотрим следующий простой пример:
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
и не будут работать во всех случаях.