【问题标题】:multiple plots in R (using par(new=T/F))R中的多个图(使用par(new = T / F))
【发布时间】:2018-04-17 00:11:09
【问题描述】:

我正在尝试在 R(Rstudio,mac)中的同一图中绘制多个图,使用:

plot(
  X,
  Y1,
  pch = 0,
  ylim = c(min_v, max_v),
  col = "red"
)
par(new = T)
plot(
  X,
  Y2,
  pch = 1,
  ylim = c(min_v, max_v),
  col = "blue"
)
par(new = F)

plot(
  X,
  Y3,
  pch = 2,
  ylim = c(min_v, max_v),
  col = "green"
)
par(new = F)

但是,它只绘制了第三个情节。
我错过了什么?

【问题讨论】:

  • 第二个par(new = F)应该改为par(new = T)。我认为您应该考虑为此使用ggplot2
  • 谢谢,成功了。

标签: r plot figure


【解决方案1】:

积分

我认为最后两个最好使用points 而不是情节。

min_v <- min(Y1, Y2, Y3)
max_v <- max(Y1, Y2, Y3)
xr <- range(X)

plot(X, Y1, pch = 21, ylim = c(min_v, max_v),
  xlim = xr, bg = "red", , 
  ylab = expression(paste(Y[i],', i = {1, 2, 3}')), xlab ="X")
points(X, Y2, pch = 22, bg = "blue")
points(X, Y3, pch = 23, bg = "green")

情节

如果 OP 真的想使用 plot 函数,那么以下内容可能会有用。 (OP 的主要错误是使用第二个new=F,但也会有其他问题,因为 y 轴标签彼此重叠等)

plot(
  X, Y1, pch = 21, ylim = c(min_v, max_v),
  xlim = xr,
  bg = "red",
  ylab = "", xlab ="",
)
par(new = T)
plot(
  X, Y2, pch = 22, ylim = c(min_v, max_v),
  xlim = xr,
  bg = "blue",
  ylab = "", xlab ="",
)

par(new = T)
plot(
  X, Y3, pch = 23, ylim = c(min_v, max_v),
  xlim = xr,
  bg = "green",
  ylab = expression(paste(Y[i],', i = {1, 2, 3}')),
  xlab ="X",
)
par(new = F)

ggplot2

当我在做的时候,这里也是 的版本。

library(ggplot2)
df <- data.frame(X=X, Y1=Y1, Y2=Y2, Y3=Y3)
p1 <- ggplot(df, aes(x = X, y=Y1)) + geom_point(color = "red")
p1 <- p1 + geom_point(color = "blue", aes(y=Y2))
p1 <- p1 + geom_point(color = "black", aes(y=Y3)) 
p1 + xlab("X") + ylab("Y")
p1

使用的数据:

set.seed(1984)
X <- rnorm(10)
Y1 <- rnorm(10)
Y2 <- rnorm(10)
Y3 <- rnorm(10)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-23
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多