如何使用'facet'在GGPLOT中创建多个密度图 [英] How to use 'facet' to create multiple density plot in GGPLOT

查看:240
本文介绍了如何使用'facet'在GGPLOT中创建多个密度图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下即时创建的数据:

 > (200,平均值= .8),rnorm(200,平均值= .9),rnorm(200,平均值= 1),rnorm(200,平均值= 2),rnorm(200,mean = .3)),rnorm(200,mean = 4),rorm(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)#忽略NA
>的警告头像(df_log)

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


解决方案

您必须先准备好您的数据。我已经在 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_log df >你会得到这样的东西:

  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 = bf <= p + facet_wrap(〜grp1)
p
= af(x = value))+ geom_density code>


I have the following data created on the fly:

 > 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)

What I want to do is to create multiple plots in one panel like the sketch below using 'facet'. How can I go about it?

解决方案

You'll have to prepare your data first. I've illustrated this on your data.frame df as it is a proper normal distribution.

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")

Doing the same by replacing df with df_log you'd get something like this:

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

这篇关于如何使用'facet'在GGPLOT中创建多个密度图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆