Сборка нескольких графических объектов - PullRequest
2 голосов
/ 19 апреля 2011

Рассмотрим следующий простой пример:

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]

, который дает следующие две цифры

enter image description here enter image description here

Теперь я бы хотел совместить их, один над другим, без каких-либо дополнительных пробелов. Выполнение FullGraphics@GraphicsColumn[{p1, p2}, Frame -> All] возвращает объект с дополнительным пробелом вокруг более короткой фигуры (для иллюстрации я включил кадры во всех объектах) enter image description here

Я не смог найти способ заставить каждую из «ячеек» столбца вертикально соответствовать размеру изображения (ПРИМЕЧАНИЕ. Мне известно, что в моем примере на втором рисунке есть дополнительные горизонтальные пробелы, и это намеренно. Я только пытаюсь подогнать его по вертикали). Я попытался поиграть с опцией Spacings, но это все еще не удовлетворительно. Итак, мой первый вопрос: «Есть ли способ, которым я могу сделать это, используя GraphicsGrid или GraphicsColumn или любым другим способом?»

Другим способом было бы использовать ImageAssemble примерно так:

ImageAssemble[Map[FullGraphics, {{p1}, {p2}}, {2}]]

, который делает то, что я хочу, но дает растеризованное изображение (ниже приведен снимок экрана, поскольку сохраненный файл имеет гораздо худшее разрешение).

enter image description here

Мои реальные цифры - это аккуратные векторные графики, и я даже не хочу думать о их растеризации, независимо от того, насколько высокое разрешение. Итак, мой второй вопрос: «Есть ли способ получить вывод векторной графики из ImageAssemble?» Если это поможет, я использую Mma7 и сохраняю графику как Export["filename.pdf",expr].

Я знаю, что это возможно, используя LevelScheme для показанного примера. Однако не все функции печати совместимы с LevelScheme и не будут работать во всех случаях.

Ответы [ 3 ]

4 голосов
/ 19 апреля 2011

Должен ли результат быть графическим? Если нет, вы можете просто использовать обычный столбец:

Column[{p1, p2}, Spacings -> 0]

enter image description here

2 голосов
/ 19 апреля 2011

Опираясь на ответ Бретта, это может быть тем, что вы хотите:

FullGraphics@GraphicsGrid[{{p1}, {p2}}, Spacings -> 0]
0 голосов
/ 06 февраля 2012

Метод 1:

  • Использование ImageAssemble[{image1},{image2}....].
  • Можно использовать ImagePad для добавления пространства вокруг каждого изображения:

    ImageAssemble[ {ImagePad[image1,m1]}, {ImagePad[image2,m2]},...]
    
  • Примечание - все изображения должны быть одинакового размера (Использовать ImageDimensions и соответствующий выбор m1, m2 ...).

Метод 2:

  • определить массив изображений размерных строк x столбцов, скажем «myphotos»

    ImageAssemble[myphotos]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...