[英]ggplot2: group data.frame in facets according to some criteria
如果我有一個data.frame包含要繪制的數據,那么在facet_wrap(或facet_grid)的不同圖中將數據“分組”的最簡單方法是什么?
舉一個具體的例子,如果數據框是這樣的:
ID | P1 | P2 | P3 | P4 | P5
....(data)....
我想在第一個方面具有ID的P1,P2,P3,在第二個方面具有ID的P4,在第三個方面具有ID的P5。
我懷疑我舉了一個完全模仿您的例子,但希望您能明白這一點。 ggplot2圖形的技巧是使用melt()
將數據放入長格式。 然后,您可以根據要分組的方式創建facet
變量。 這是一個例子:
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)
您基本上是在要求將cyl
同時用作構面變量和分組變量。
在這里,我首先創建第二個變量cyl_class
用作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()
可以改進顏色(以獲得更好的對比度),並改進示例的類型,但是常規方法是合理且易於適應的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.