Построение нескольких изображений в формате JPEG на одном дисплее - PullRequest
7 голосов
/ 08 сентября 2010

Мне нужно построить и отобразить несколько изображений в формате JPEG на одном комбинированном дисплее (или холсте?). Например, предположим, у меня есть изображения {a, b, c, d} .jpg, каждый разного размера, и я хотел бы нанести их на одну страницу в сетке 2x2. Было бы также неплохо иметь возможность установить заголовок для каждого подзаговора.

Я тщательно искал решение, но не мог найти, как это сделать, поэтому любые идеи действительно помогут. Я бы предпочел использовать решение, основанное на пакете EBImage.

Ответы [ 3 ]

4 голосов
/ 08 сентября 2010

Существует два способа упорядочить несколько графиков с помощью функций базового графа, а именно: par(mfrow=c(rows,columns)) (заменить rows и columns на целые числа) и layout(mat), где mat - это матрица, подобная matrix(c(1,2,3,4)).
Для получения дополнительной информации см. ?par, ?layout, и особенно Quick-R: объединение графиков .

Однако, поскольку ваш вопрос касается изображений, я не знаю, если этопоможет вам на всех.Если нет, прошу прощения за неправильное толкование вашего вопроса.

3 голосов
/ 08 сентября 2010

Чтобы добавить в решение Henriks, достаточно удобный способ использования функции par ():

jpeg(filename="somefile.jpg")
op <- par(mfrow=c(2,2)
#plot the plots you want
par(op)
dev.off()

Таким образом, вы возвращаете параметры в старое состояние после запуска кода. Помните о том, что это НЕ верно, если один из графиков дал ошибку.

Помните о том, что R всегда размещает графики в одном и том же порядке. Использование mfrow заполняет сетку построчно. Если в коде вы используете mfcol вместо mfrow, столбец за столбцом заполняется.

Макет - это совсем другая история. Здесь вы можете определить, в каком порядке должны быть расположены участки. Так что layout(matrix(1:4,nrow=2) делает то же самое, что и par(mfcol=c(2,2)). Но layout(matrix(c(1,4,3,2),ncol=2)) помещает первый график слева, следующий справа внизу, третий справа и последний слева внизу.

Каждый сюжет полностью независим, поэтому заголовки, которые вы указываете с помощью опции main, также печатаются. Если вы хотите иметь больше гибкости, вы должны взглянуть на графики решетки.

1 голос
/ 08 сентября 2010

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

Функция ms.image (тот же пакет), что и my.symbols, является еще одной возможностью.

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