如何在R中的一个图表中绘制两个图形? 我可以使用mfrow = c(2,1)在分离的部分绘制其中两个,但它们并没有被绘制在一起,所以对我来说没什么意义.. 感谢
答案 0 :(得分:1)
参见本教程,我写了Devon Shurick(它不会去任何地方,对于那些将其作为链接投票的人):http://www.stat.berkeley.edu/~vigre/undergrad/reports/VIGRERintro.pdf
如果你想要将一个图形强加在另一个图形上,你可以做类似这样的提取:
要绘制来自两个向量x和y的数据点,我们可以使用带有形式图(x,y)的绘图函数,或者使用形式图(x)通过索引类似地绘制一个向量。
plot(NORM, TEE, ylim = c(-4, 5), main = "NORM and TEE plot")
绘制的限制或范围可以通过以下方式指定
xlim = c(lowerBound,upperBound)和ylim = c(lowerBound,upperBound)
在上面的情节调用中看到。 main =指定情节的标题。
标签也可以使用xlab和ylab选项进行指定。我们可以叠加
使用点功能在我们的原始绘图之上。例如,到
区分所有点(TEEi,NORMi)使得TEEi 如果您希望彼此相邻显示多个图表,以下内容将有所帮助: 第3.4节完全专注于在一个图表中绘制多个图形。 以下是该部分的一些示例: 3.4.1 par 通过使用par funcion和mfrow选项,可以在一个图上放置多个图形。 mfrow使用以下格式mfrow = c(#rows,#columns)。例如, 3.4.3更换屏幕 假设我们想要绘图部分中的所有绘图都在一个图上。 6
我们可以使用split.screen执行此操作,如下所示 现在,假设您想要左上角插槽和直方图中的方框图
在右上方,另外你想给一个箱形图标题。
只需相应地重新分配每个屏幕的内容 3.4.4分屏内的分屏 你可能已经注意到直方图的图例被遗漏了
剧情。这是因为在如此小的屏幕上传播这个传奇是很困难的。 假设为了解决这个问题,我们想要一个包含大直方图的图形
下面的小盒子图和散点图。我们可以拆分已有的屏幕
被拆分以实现这一目标。请注意以下示例points(NORM[NORM^2 -1> TEE], TEE[ TEE + 1< NORM^2], col = "blue")
legend(legend = c("TEE > NORM^2 - 1 ", "TEE < NORM^2 - 1" ), col = c(1, 4), x = "topright", pch = 1)
par(mfrow = c(1, 2))
plot(NORM, TEE, ylim = c(-4, 5), main = "NORM and TEE plot")
plot(NORM, TEE, ylim = c(-4, 5), main = "NORM and TEE plot")
points(NORM[NORM^2 -1> TEE], TEE[ TEE + 1< NORM^2], col = "blue")
screen.split(2,2)
#[1] 1 2 3 4
screen(1) # what follows goes in slot (1,1)
hist(RandomNormal, seq(-3.2, 3.2, .2), prob = TRUE)
curve(dnorm(x), add = TRUE, col = "red");
screen(2) # what follows goes in slot (1,2);
boxplot(DATA.oner);
screen(3) # similarly for (2,1);
plot(NORM, TEE, ylim = c(-4, 5), main = "NORM and TEE plot");
screen(4) # similarly for (2,2);
plot(NORM, TEE, ylim = c(-4, 5), main = "NORM and TEE plot");
points(NORM[NORM^2 - 1 > TEE], TEE[TEE + 1 < NORM^2], col = "blue");
screen(1) # Watch the screen (1,1) go blank
boxplot(DATA.oner, main = "Box Plots of DATA.oner")
screen(2) # again for slot (1,2)
hist(RandomNormal, seq(-3.2, 3.2, .2), prob = TRUE)
curve(dnorm(x), add = TRUE, col = "red")
split.screen(c(2,1)) # The screen is now split in two
# [1] 1 2
split.screen(c(1,2), screen = 2) # splits the second into 2
# [1] 3 4
screen(1) # note screen 2 is now refered to as 3 and 4
hist(RandomNormal, seq(-3.2, 3.2, .2), prob = TRUE)
curve(dnorm(x), add = TRUE, col = "red")
legend(legend = c("Theoretical N(0, 1)"), col = c(2, 3), x = "topright", lty = 1)
screen(3) # We call on screen 3 and 4, not 2
boxplot(DATA.oner, main = "Box Plot of DATA.oner")
screen(4)
plot(NORM, TEE, ylim = c(-4, 5), main = "NORM and TEE plot")