R 中的多个图(使用 par(new=T/F))
multiple plots in R (using par(new=T/F))
我正在尝试在 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)
但是,它只绘制了第三个图。
我错过了什么?
分
我觉得最后两个最好用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
虽然我在做,但这里也有 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)
我正在尝试在 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)
但是,它只绘制了第三个图。
我错过了什么?
分
我觉得最后两个最好用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
虽然我在做,但这里也有 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)