Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
分组箱线图数据,同时将其各自的X轴标签保留在R中的ggplot2中_R_Ggplot2_Facet - Fatal编程技术网

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

分组箱线图数据,同时将其各自的X轴标签保留在R中的ggplot2中,r,ggplot2,facet,R,Ggplot2,Facet,我正在根据样本类型(x轴)绘制Gene1计数(y轴)的等级。我想根据样本的来源组织(乳腺、结直肠、肺)和颜色代码对样本类型进行分组,无论样本是来自癌症还是来自红色和绿色的正常组织 我制作了带有刻面的图1)箱线图(请参见下文),这与我的设想很接近,但显示了一些主要问题。我有几个问题需要改进图表: [IMG] 1)每个面都有9条车道(柱),其中许多车道(柱)没有被盒子占据。如何删除每个面中未被长方体占用的车道(柱) 2)我是否可以在不使用面的情况下绘制此图,同时仍保留图中所示的分组 3)是否可以创建

我正在根据样本类型(x轴)绘制Gene1计数(y轴)的等级。我想根据样本的来源组织(乳腺、结直肠、肺)和颜色代码对样本类型进行分组,无论样本是来自癌症还是来自红色和绿色的正常组织

我制作了带有刻面的图1)箱线图(请参见下文),这与我的设想很接近,但显示了一些主要问题。我有几个问题需要改进图表:

[IMG]

1)每个面都有9条车道(柱),其中许多车道(柱)没有被盒子占据。如何删除每个面中未被长方体占用的车道(柱)

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

3)是否可以创建两层刻面标签?也就是说,我想把标签“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

通过将
scales=“free_x”
添加到
facet_网格中,可以删除x轴上未使用的标签。如果您还添加
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")
您将获得以下绘图:

当您不想使用facet但保留分组时,您可能希望创建一个考虑分组的新变量。您可以通过
交互

# 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))])
这将生成以下绘图:

如果要在绘图中同时包含
Gene1
Gene2
,最好先将数据重塑为长格式:

library(tidyr)
test2 <- test %>% gather(gene,value,5:6)
上述代码将为您提供以下绘图:

在不使用额外镶嵌面层的情况下包含不同基因的选项,您可以使用:

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))
结果是:


感谢您提供的简单解决方案!太棒了。我知道交互功能,但让我恼火的是X轴标签太长了。然而,这张图使这三种组织难以可视化。有没有一种方法可以将每种组织的条状物紧密地放在一起,并在不同的组织类型之间留下一个很大的间隙?谢谢你h3rm4n,你帮了我很多!现在,我只是想知道是否有可能使每个方面的酒吧坐紧挨着对方,以节省宽度。我可能需要将Gene2放在Gene1的右边,因为很难比较等级:(@Peter我添加了另一个选项。哇,这看起来很棒!但遗憾的是,对于传说中的Gene1和Gene2,它们看起来都是白色的,我们必须做出一个假设:(很遗憾,ggplot2无法绘制阴影条。)(至少根据我的研究)。
library(tidyr)
test2 <- test %>% gather(gene,value,5:6)
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")
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))