将箱形图数据分组,同时将其各自的X轴标签保留在R中的ggplot2中

Pet*_*ter 2 r facet ggplot2

我正在根据样本类型(x轴)绘制Gene1计数(y轴)的等级.我希望根据它们的原始组织(乳房,结肠直肠,肺)和颜色代码对样本类型进行分组,无论它们分别来自癌症还是来自红色和绿色的正常组织.

我制作了图1)BOXPLOTS WITH FACETS(请参见下文),这与我的愿景很接近,但显示了一些主要问题.我在图表上有一些问题需要改进:

[IMG] http://i57.tinypic.com/10yfmmw.png [/ IMG ]

1)每个方面最终有9个车道(列),其中许多车道没有被箱子占据.如何删除每个方面中未被框占用的通道(列)?

2)我是否可以在不使用构面的情况下绘制此图形,同时仍保留图中所示的分组?

3)是否可以创建两个小平面标签?即我想在现有的facet标签上方放置标签"Gene1".这将使我能够为Gene2生成如下所示的相同图形,因此我可以使用每个图形顶部的"主"构面标签将两个图形彼此相邻.

我希望这是有道理的.谢谢大家的建议和想法.

请参阅以下代码,以便您下载我的数据并重现图表:

测试文件导入

fileURL <- "https://dl.dropboxusercontent.com/u/4098921/testfile.csv"
test <- read.csv(fileURL,header=T)
head(test)


> head(test)
  Subset Tissue        Type id Gene1 Gene2
1 Normal Breast GTEx_Breast  1  5027 12597
2 Normal Breast GTEx_Breast  2  5287 12338
3 Normal Breast GTEx_Breast  3  2385 12543
4 Normal Breast GTEx_Breast  4  3174 12266
5 Normal Breast GTEx_Breast  5  6593 11350
6 Normal Breast GTEx_Breast  6  4648 10932
Run Code Online (Sandbox Code Playgroud)

1)带有FACETS的BOXPLOT

library(ggplot2)
ggplot(test,aes(x=Type, y=Gene1, fill=Subset))+
geom_boxplot(notch=T, notchwidth=0.5,outlier.shape=1,outlier.size=2, coef=1.5)+
theme(axis.text=element_text(color="black"))+
theme(axis.text.x=element_text(angle=90,hjust=1,vjust=0.4))+
theme(panel.grid.minor=element_blank())+
labs(size= "Type",x = "",y = "Rank of Gene1 count", title = "1) BOXPLOT WITH FACETS")+
scale_fill_manual(values=c("red","lawngreen"),name="Subset",
labels=c("Cancer (TCGA)", "Normal (GTEx)"))+
facet_grid(~Tissue)
Run Code Online (Sandbox Code Playgroud)

h3r*_*m4n 6

您可以通过添加scales = "free_x"to 来删除x轴上未使用的标签facet_grid.如果您还添加,space = "free"您将获得相同大小的箱图.附:

ggplot(test,aes(x=Type, y=Gene1, fill=Subset))+
  geom_boxplot(notch=T, notchwidth=0.5,outlier.shape=1,outlier.size=2, coef=1.5)+
  theme(axis.text=element_text(color="black"))+
  theme(axis.text.x=element_text(angle=90,hjust=1,vjust=0.4))+
  theme(panel.grid.minor=element_blank())+
  labs(size= "Type",x = "",y = "Rank of Gene1 count", title = "1) BOXPLOT WITH FACETS")+
  scale_fill_manual(values=c("red","lawngreen"),name="Subset",
                    labels=c("Cancer (TCGA)", "Normal (GTEx)"))+
  facet_grid(~Tissue, scales = "free_x", space = "free")
Run Code Online (Sandbox Code Playgroud)

你会得到以下情节:

在此输入图像描述

如果您不想使用facet但保留分组,则可能需要创建一个新的变量来考虑分组.你可以这样做interaction:

# create the new variable
test$newType <- factor(interaction(test$Tissue,test$Type))
# set the correct order of the new variable
test$newType <- factor(test$newType,
                       levels=levels(test$newType)[order(levels(test$newType))],
                       labels=levels(test$Type)[order(levels(test$newType))])
Run Code Online (Sandbox Code Playgroud)

然后你可以创建一个新的情节:

ggplot(test,aes(x=newType, y=Gene1, fill=Subset))+
  geom_boxplot(notch=T, notchwidth=0.5,outlier.shape=1,outlier.size=2, coef=1.5)+
  theme(axis.text=element_text(color="black"))+
  theme(axis.text.x=element_text(angle=90,hjust=1,vjust=0.4))+
  theme(panel.grid.minor=element_blank())+
  labs(size= "Type",x = "",y = "Rank of Gene1 count", title = "1) BOXPLOT WITH FACETS")+
  scale_fill_manual(values=c("red","lawngreen"),name="Subset",
                    labels=c("Cancer (TCGA)", "Normal (GTEx)"))
Run Code Online (Sandbox Code Playgroud)

产生以下图:

在此输入图像描述

如果你想包括Gene1Gene2你的情节,做的最好的事情是先重塑你的数据,以长格式:

library(tidyr)
test2 <- test %>% gather(gene,value,5:6)
Run Code Online (Sandbox Code Playgroud)

你可以制作一个情节:

ggplot(test2,aes(x=Type, y=value, fill=Subset))+
  geom_boxplot(notch=T, notchwidth=0.5,outlier.shape=1,outlier.size=2, coef=1.5)+
  theme(axis.text=element_text(color="black"))+
  theme(axis.text.x=element_text(angle=90,hjust=1,vjust=0.4))+
  theme(panel.grid.minor=element_blank())+
  labs(size= "Type",x = "",y = "Rank of Gene1 count", title = "1) BOXPLOT WITH FACETS")+
  scale_fill_manual(values=c("red","lawngreen"),name="Subset",
                    labels=c("Cancer (TCGA)", "Normal (GTEx)"))+
  facet_grid(gene~Tissue, scales = "free_x", space = "free")
Run Code Online (Sandbox Code Playgroud)

上面的代码将为您提供以下图表:

在此输入图像描述

在不使用其他构面图层的情况下包含不同Gene的选项,您可以使用:

ggplot(test2,aes(x=Type, y=value, fill=Subset, alpha=gene))+
  geom_boxplot(notch=T, notchwidth=0.5,outlier.shape=1,outlier.size=2, coef=1.5)+
  theme(axis.text=element_text(color="black"))+
  theme(axis.text.x=element_text(angle=90,hjust=1,vjust=0.4))+
  theme(panel.grid.minor=element_blank())+
  labs(size= "Type",x = "",y = "Rank of Gene count", title = "BOXPLOT WITH FACETS")+
  scale_fill_manual(values=c("red","lawngreen"),name="Subset",
                    labels=c("Cancer (TCGA)", "Normal (GTEx)"))+
  facet_grid(.~Tissue, scales = "free_x", space = "free") +
  theme_bw() +
  theme(axis.text.x=element_text(angle=90, vjust=0.5, hjust=1))
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述