我有三个看起来与这些相似的向量,在R中我想在同一个图上绘制它们
a <- c(3, 6, 16, 17, 11, 21)
b <- c(0.3, 2.3, 9, 9, 5 ,12)
c <- c(3, 7, 9, 7, 6, 10)
有谁知道我可以使用ggplot2包编写以下命令吗?
colours <- rainbow(3)
plot(a, col=colours[1], type="l", ylim=c(min(m), max(m)),
xlab="time[h]", main="bla")
lines(b, col=colours[2])
lines(c, col=colours[3])
legend(x="bottomright", legend=c("a","b", "c"),
col=c(colours[1],colours[2],colours[3]), pch=19, inset=0.01)
我只是设法绘制单独的线条或使用刻面来绘制它们 - 通过从矢量创建数据帧。
干杯!
答案 0 :(得分:2)
是的,我们这样做。
首先,将您的数据放在数据框中,然后使用melt
将其转换为“长”格式:
dat <- data.frame(a=a,b=b,c=c)
dat <- melt(dat)
接下来,我们在数据框中添加一个显式的'x'变量:
dat$x <- rep(1:6,times=3)
最后,我们可以使用以下代码绘制图形:
ggplot(dat,aes(x=x,y=value)) +
geom_line(aes(colour=variable)) +
scale_colour_manual(values=colours) +
labs(x="time[h]",y="a",colour="") +
opts(title="bla")
答案 1 :(得分:0)
这样的东西?
a<-c(3,6,16,17,11,21)
b<-c(0.3, 2.3, 9, 9, 5 ,12)
c<-c(3, 7,9, 7, 6 ,10)
x <- 1:6
df <- data.frame(a,b,c,x)
require(reshape)
dfm <- melt(df, id = "x")
require(ggplot2)
ggplot(dfm, aes(x = x, y = value, col = variable)) +
geom_line() +
theme_bw() +
opts(panel.grid.major = theme_blank(),
panel.grid.minor = theme_blank(),
legend.position = c(.9, .2),
title = "bla") +
ylab("a") +
xlab("time [h]") +
scale_color_discrete("")