2016-09-15 4 views
1

Я создал несколько сюжетов с функцией fill.contour. Затем я хотел бы построить два сюжета рядом друг с другом. Поэтому я использовал функцию grid.arrange. Это мой код:grid.arrange with filled.contour in R Studio

install.packages("gridExtra") 
install.packages("lattice") 
install.packages("grid") 
library(lattice) 
library(gridExtra) 
library(grid) 

# Fake data 
x <- c(1:10) 

y <- c(1:10) 
z<-matrix(data=c(1:100), nrow=10, ncol=10, byrow = FALSE) 


p1<-filled.contour(x,y,z, color = terrain.colors, asp = 1) # simple 


# Lay out both plots 
grid.arrange(p1,p1, ncol=2) 

Но то, что я получаю:

Ошибка в GList (список (wrapvp = список (х = 0,5, у = 0,5, ширина = 1, высота = 1,: только 'grobs' разрешено в "GList"

Вот почему я попытался это:

install.packages("gridExtra") 
install.packages("lattice") 
install.packages("grid") 
library(lattice) 
library(gridExtra) 
library(grid) 

# Fake data (taken from the fill.contour help examples) 
x <- c(1:10) 

y <- c(1:10) 
z<-matrix(data=c(1:100), nrow=10, ncol=10, byrow = FALSE) 


p1<-filled.contour(x,y,z, color = terrain.colors, asp = 1) # simple 
p1<-grob(p1) 
is.grob(p1) 


# Lay out both plots 
grid.arrange(p1,p1, ncol=2) 

Но это тоже не работает. Не могли бы вы мне помочь?

+0

'fill.contour' - это базовая графическая функция, а не функция' решетки', и не создает гроба или объект, который можно превратить в grob (хотя, возможно, его можно повернуть в grob, используя функции в пакете 'gridBase'). Если вы наберете 'p1 <-filled.contour (x, y, z, color = terrain.colors, asp = 1)', а затем введите 'p1', вывод будет' NULL'. 'решетка' имеет функции' contour', 'contourplot' и' levelplot', которые могут быть вам нужны. – eipi10

+0

также см. Http://stackoverflow.com/questions/27929452/r-return-corrplot-as-object./#27948707 – user2957945

+0

Моя проблема с контурной платой и levelplot заключается в том, что они требуют различного ввода, чем заполнено. – rsl93

ответ

0

Как указано в @ eipi10, fill.contour - это базовая графика, поэтому вы должны использовать функции базового расположения, т. Е. par(mfrow = c(1,2)), чтобы расположить два участка бок о бок.

EDIT: видимо заполненный контур славится победой всех попыток макета. Я попытался par(plt...)layout() и par(mfrow...) я нашел filled.countour3 в качестве обходного пути, как описано здесь:

http://wiki.cbr.washington.edu/qerm/sites/qerm/images/e/ec/Example_4_panel_contour_plot_with_one_legend.R

и в вопросе 14758391 на этом сайте. Извините за недоразумение

+0

Я пробовал это. Вы получаете два отдельных сюжета, а не один сюжет с обоими. – rsl93

+0

Хорошо. Можете ли вы изменить мой код, чтобы он работал, или вы можете дать мне другой пример кода? Я бы это подтвердил. – rsl93

+0

@ rsl93; мои извинения, вы не можете использовать 'mfrow' в этом случае, поскольку функция' fill.contour' повторила вызов 'plot.new()' через него. Id предлагает использовать подход из ссылки, приведенной выше (ps, если вы посмотрели на объект 'p1' в своем коде, это значение равно null, поэтому вы не можете их комбинировать: обычно вы не можете назначить базовый R-график объекту) – user2957945

Смежные вопросы