无论何时运行此代码,第一个图表都会简单地覆盖上一个。在R中难道没有一种方法可以分开获取两个图表吗?
plot(pc)
title(main='abc',xlab='xx',ylab='yy')
plot(pcs)
title(main='sdf',xlab='sdf',ylab='xcv')
如果您只想同时打开两个不同的绘图窗口,请使用dev.new
,例如:
plot(1:10)
dev.new()
plot(10:1)
如果你想在同一窗口中绘制两个图形,那么就像Shane提到的一样,设置mfrow
参数。
par(mfrow = c(2,1))
plot(1:10)
plot(10:1)
如果你想尝试更高级的内容,可以看看lattice图形或ggplot,它们都非常适合创建条件化图(在不同的框架中出现不同数据子集的图)。一个lattice示例: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的示例(您需要首先从CRAN下载ggplot)。
library(ggplot2)
qplot(x, y, data = dfr, facets = grp ~ .)
#or equivalently
ggplot(dfr, aes(x, y)) + geom_point() + facet_grid(grp ~ .)
par
。 par(mfrow = c(2, 1))
layout(1:2)
plot(A)
plot(B)
在每个绘图之前尝试使用命令x11()
,以下是一个例子:
x11()
plot(1:10)
x11()
plot(rnorm(10))
这将会导致不同的绘图窗口。你可以在任何这些x11()
窗口中添加“par”命令,从而获得更多种类的绘图,比如4个小图和一个大图在另一个窗口中。
另一种方法是将绘图分配为一个对象,然后在需要时显示它,例如:
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
plot
返回NULL
。你不能以这种方式保存图形的细节。如果你使用基于grid
的图形(例如lattice
),你所建议的是可能的,例如p1 <- xyplot(y~x); print(p1)
。 - Richie Cotton?Devices
以及,
?dev.cur
mfcol
参数一些爱。它以列的方式填充您的图形,这与R中的每个其他对象填充的方式相同(好吧,主要是矩阵)。我刚刚发现了它。我一直在想为什么图形是按行填充的...不认为我会再回到mfrow
! - MichaelChirico