在R中创建多个折线图

时间:2015-07-02 01:12:29

标签: r plot ggplot2

我有以下虚拟数据。

set.seed(45)
df <- data.frame(x=rep(1:5, 9), val1=sample(1:100,45),
val2=sample(1:100,45),variable=rep(paste0("category",1:9),each=5))

我想基于x绘制val1和val2(在我的实际数据中是一系列日期值)。我怎样才能做到这一点。我试过ggplot2,mplot,并且一切都没有成功。我也查看了其他类似的帖子,但它们不起作用或满足我的需求。

谢谢。

3 个答案:

答案 0 :(得分:5)

更多ggplot2个选项,无需重塑数据

## All on one
ggplot(df, aes(x, val1, color=variable, linetype="a")) +
  geom_line() +
  geom_line(aes(x, val2, color=variable, linetype="b")) +
  theme_bw() + ylab("val") +
  scale_linetype_manual(name="val", labels=c("val1", "val2"), values=1:2)

enter image description here

## Faceted
ggplot(df, aes(x, val1, color=variable, linetype="a")) +
  geom_line() +
  geom_line(aes(x, val2, color=variable, linetype="b")) +
  theme_bw() + ylab("val") +
  guides(color=FALSE) +
  scale_linetype_manual(name="val", labels=c("val1", "val2"), values=1:2) +
  facet_wrap(~variable)

enter image description here

答案 1 :(得分:3)

使用ggplot2首先融化数据是个好主意

set.seed(45)
## I've renamed your 'variable' to 'cat'
df <- data.frame(x=rep(1:5, 9), val1=sample(1:100,45),
             val2=sample(1:100,45),cat=rep(paste0("category",1:9),each=5))

library(ggplot2)
library(reshape2)
df_m <- melt(df, id.var=c("x", "cat"))

ggplot(df_m, aes(x=x, y=value, group=variable)) +
  geom_line() +
  facet_wrap(~cat)

facet

答案 2 :(得分:1)

我不完全确定你想要什么,但这样的事情呢?

ggplot(df, aes(x=val1, y=val2)) + geom_line() + facet_grid(. ~ x)