Как разделить два участка в R?

Каждый раз, когда я запускаю этот код, первый график просто перезаписывает предыдущий. Разве в R нет способа разделить, чтобы получить два сюжета?

plot(pc)
title(main='abc',xlab='xx',ylab='yy')

plot(pcs)
title(main='sdf',xlab='sdf',ylab='xcv')

person phpdash    schedule 26.11.2009    source источник


Ответы (6)


Если вы просто хотите, чтобы одновременно открывались два разных окна построения графиков, используйте dev.new, например.

plot(1:10)
dev.new()
plot(10:1)

Если вы хотите нарисовать два графика в одном окне, тогда, как упоминал Шейн, установите параметр mfrow.

par(mfrow = c(2,1))
plot(1:10)
plot(10:1)

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

Пример решетки:

library(lattice)
dfr <- data.frame(
  x   = rep(1:10, 2), 
  y   = c(1:10, 10:1), 
  grp = rep(letters[1:2], each = 10)
)
xyplot(y ~ x | grp, data = dfr)

Пример ggplot. (Сначала вам нужно загрузить ggplot из CRAN.)

library(ggplot2)
qplot(x, y, data = dfr, facets = grp ~ .)
#or equivalently
ggplot(dfr, aes(x, y)) + geom_point() + facet_grid(grp ~ .)
person Richie Cotton    schedule 26.11.2009
comment
Надо отдать должное параметру mfcol. Он заполняет ваши графики по столбцам, что соответствует тому, как заполняется любой другой объект в R (ну, в основном, матрицы). Только что открыл это. Мне всегда было интересно, почему участки заполняются построчно ... не думаю, что когда-нибудь вернусь к mfrow! - person MichaelChirico; 12.05.2016

Попробуйте использовать par перед тем, как строить график.

 par(mfrow = c(2, 1))
person Shane    schedule 26.11.2009

Вы также можете попробовать команду макета:

Попробуйте layout(1:2)

plot(A)    
plot(B)
person CGN    schedule 07.03.2010

попробуйте команду x11() перед каждым графиком, вот пример:

x11()
plot(1:10)
x11()
plot(rnorm(10))

Это приведет к разным окнам сюжета. Вы можете добавить команду «par» к любому из этих x11() окон и получить больше разнообразных графиков, то есть 4 графика в одном окне, а большой график в другом окне.

person Rakesh Parhar    schedule 16.08.2010

Если вы хотите, чтобы 2 графика были в отдельных окнах или файлах, вы можете выбрать новые устройства перед вызовом каждой команды построения. Видеть:

? Устройства

И,

? dev.cur

person Michael Schneider    schedule 26.11.2009
comment
о, хорошо, спасибо за все отличные предложения, ребята, снова узнал что-то новое. - person phpdash; 28.11.2009

Альтернативный ответ - назначить сюжет как объект, а затем вы можете отобразить его, когда захотите, т.е.

abcplot<-plot(pc) title(main='abc',xlab='xx',ylab='yy')

sdfplot<-plot(pcs) title(main='sdf',xlab='sdf',ylab='xcv')

abcplot # Displays the abc plot
sdfplot # Displays the sdf plot
abcplot # Displays the abc plot again
person PaulHurleyuk    schedule 27.11.2009
comment
Это не работает. plot возвращает NULL. Вы не можете сохранить детали графика таким образом. Если вы используете графику на основе grid (например, lattice), то то, что вы предлагаете, возможно, например p1 <- xyplot(y~x); print(p1). - person Richie Cotton; 30.11.2009