【问题标题】:How to create a faceted line-graph using ggplot?如何使用 ggplot 创建多面线图?
【发布时间】:2013-01-16 10:40:55
【问题描述】:

我有一个使用此代码创建的数据框:

require(reshape2)
foo <- data.frame( abs( cbind(rnorm(3),rnorm(3, mean=.8),rnorm(3, mean=.9),rnorm(3, mean=1))))
qux <- data.frame( abs( cbind(rnorm(3),rnorm(3, mean=.3),rnorm(3, mean=.4),rnorm(1, mean=2))))
bar <- data.frame( abs( cbind(rnorm(3,mean=.4),rnorm(3, mean=.3),rnorm(3, mean=.9),rnorm(3, mean=1))))

colnames(foo) <- c("w","x","y","z")
colnames(qux) <- c("w","x","y","z")
colnames(bar) <- c("w","x","y","z")

rownames(foo) <- c("n","q","r")
rownames(qux) <- c("n","q","r")
rownames(bar) <- c("n","q","r")

foo <- cbind(ID=rownames(foo),foo)
bar <- cbind(ID=rownames(bar),qux)
qux <- cbind(ID=rownames(bar),qux)

foo$fn <- "foo"
qux$fn <- "qux"
bar$fn <- "bar"

alldf<-rbind(foo,qux,bar)
alldf.m <- melt(alldf)

我想做的是创建一个 facet 格式的ggplot 线曲线,所以它会创建一个像这样的图形:

实际的图表不包含向上的线条 - 这只是一个草图,以便线条分隔清晰。

我当前的代码不起作用:

    library(ggplot2)
    p <- ggplot(data=alldf.m, aes(x=variable)) + 
           geom_line(aes(colour=ID),alpha=0.4)
    p <- p + facet_wrap( ~ fn)
    p

最好的方法是什么?

【问题讨论】:

  • +1 用于手绘图形

标签: r ggplot2 curve facet


【解决方案1】:

即使是 ggplot2 也是 OP 要求的,但我认为这个例子也适用于lattice

library(lattice)
xyplot(data=alldf.m, value~variable|fn, type ='b', groups = ID, auto.key = T)

使用latticeExtra 我们可以得到更接近ggplot2 的解决方案:

 p <-  xyplot(data=alldf.m, value~variable|fn, type ='b', groups = ID, auto.key = T)
 update(p , par.settings = ggplot2like())

【讨论】:

    【解决方案2】:

    试试这个:

    ggplot(data=alldf.m, aes(x=variable, y = value, colour = ID, group = ID)) + 
      geom_line() + facet_wrap(~fn)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-15
      • 2014-05-26
      • 2019-02-17
      • 2014-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多