如何在R中的一个图中绘制两个图形?

时间:2013-08-19 06:50:34

标签: r

如何在R中的一个图表中绘制两个图形? 我可以使用mfrow = c(2,1)在分离的部分绘制其中两个,但它们并没有被绘制在一起,所以对我来说没什么意义.. 感谢

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

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)

如果您希望彼此相邻显示多个图表,以下内容将有所帮助:

第3.4节完全专注于在一个图表中绘制多个图形。

以下是该部分的一些示例:

3.4.1 par

通过使用par funcion和mfrow选项,可以在一个图上放置多个图形。 mfrow使用以下格式mfrow = c(#rows,#columns)。例如,

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")

3.4.3更换屏幕

假设我们想要绘图部分中的所有绘图都在一个图上。 6 我们可以使用split.screen执行此操作,如下所示

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")

3.4.4分屏内的分屏

你可能已经注意到直方图的图例被遗漏了 剧情。这是因为在如此小的屏幕上传播这个传奇是很困难的。

假设为了解决这个问题,我们想要一个包含大直方图的图形 下面的小盒子图和散点图。我们可以拆分已有的屏幕 被拆分以实现这一目标。请注意以下示例

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")
相关问题