【问题标题】:How to use 'facet' to create multiple density plot in GGPLOT如何使用 'facet' 在 GGPLOT 中创建多个密度图
【发布时间】:2013-01-31 10:17:30
【问题描述】:

我动态创建了以下数据:

 > df <- data.frame( cbind(rnorm(200),rnorm(200, mean=.8),rnorm(200, mean=.9),rnorm(200, mean=1),rnorm(200, mean=.2),rnorm(200, mean=.3)),rnorm(200, mean=4),rnorm(200, mean=.5))
 > colnames(df) <- c("w.cancer","w.normal","x.cancer","x.normal","y.cancer","y.normal","z.cancer","z.normal")
 > df_log<-log2(df) # ignore the warning with NA
 > head(df_log)

我想要做的是在一个面板中创建多个绘图,如下面的草图,使用“facet”。 我该怎么办?

【问题讨论】:

  • 是的。上图只是一个草图,不能准确反映真实数据。
  • +1 美丽的草图。
  • @neversaint 这些草图是您手工制作的,还是使用某种软件工具制作的?
  • 使用你的草图(而不是 ggplot!)。他们真的很漂亮!

标签: r plot ggplot2


【解决方案1】:

您必须先准备好数据。我已经在你的 data.frame df 上说明了这一点,因为它是一个适当的正态分布。

require(ggplot2)
require(reshape2)
df$id <- 1:nrow(df)

df.m <- melt(df, "id")
df.m$grp1 <- factor(gsub("\\..*$", "", df.m$variable))
df.m$grp2 <- factor(gsub(".*\\.", "", df.m$variable))

p <- ggplot(data = df.m, aes(x=value)) + geom_density(aes(fill=grp2), alpha = 0.4)
p <- p + facet_wrap( ~ grp1)
p + scale_fill_brewer(palette = "Set1")

通过将df 替换为df_log 来做同样的事情,你会得到这样的结果:

require(ggplot2)
require(reshape2)
df_log$id <- 1:nrow(df_log)

df.m <- melt(df_log, "id")
df.m$grp1 <- factor(gsub("\\..*$", "", df.m$variable))
df.m$grp2 <- factor(gsub(".*\\.", "", df.m$variable))

p <- ggplot(data = df.m, aes(x=value)) + geom_density(aes(fill=grp2), alpha = 0.5)
p <- p + facet_wrap( ~ grp1)
p

【讨论】:

    猜你喜欢
    • 2018-11-14
    • 2021-09-25
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    相关资源
    最近更新 更多