2011-12-02 60 views
2

如果我有一个data.frame包含我想要绘制的数据,在facet_wrap(或facet_grid)的不同图中“分组”数据的最简单方法是什么)?ggplot2:根据某些标准在facet中组data.frame

为了使一个具体的例子,如果数据帧是这样的:

ID | P1 | P2 | P3 | P4 | P5 
....(data).... 

我想有P1,P2,P3在ID在所述第一面,P4在ID在第二和P5以上ID在第三。

回答

3

我怀疑我做了一个完全模仿你的例子,但希望你能明白这一点。 ggplot2图形的技巧是将您的数据转换成长格式,格式为melt()。然后,您可以根据想要如何分组它们来创建一个facet ing变量。这里有一个例子:

library(ggplot2) 
dat <- data.frame(ID = rnorm(10), P1 = rnorm(10), P2 = rnorm(10), P3 = rnorm(10), P4 = rnorm(10), P5 = rnorm(10)) 
dat.m <- melt(dat, id.vars = 1) 
#Create faceting variable 
dat.m <- transform(dat.m, facet = ifelse(variable %in% c("P1", "P2", "P3"), 1, ifelse(variable == "P4", 2,3))) 

ggplot(dat.m, aes(ID, value)) + geom_point() + facet_wrap(~facet) 

enter image description here

2

你基本上要求使用cyl既是一个刻面和分组变量。

在这里,我首先创建一个第二可变 - cyl_class - 要用作刻面的变量,并使用cyl继续组:

library(ggplot2) 

mpg$cyl_class <- cut(mpg$cyl, 
        breaks=c(3.5, 4.5, 5.5, 8.5), 
        labels=c("4", "5", "6-8")) 

p <- qplot(cty, hwy, group=cyl, data = mpg) 
p + facet_wrap(~ cyl_class) + 
    geom_point(aes(colour=factor(cyl))) + 
    scale_colour_discrete() 

的颜色可以改进(为了更好的对比度),这个例子很愚蠢,但一般的做法是合理的,而且很容易适应。

enter image description here