簡體   English   中英

ggplot2:根據某些條件將data.frame分組為多個方面

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM