首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有叠加选项和分组选项的Barplot,没有面板网格

有叠加选项和分组选项的Barplot,没有面板网格
EN

Stack Overflow用户
提问于 2017-11-21 14:04:50
回答 2查看 671关注 0票数 3

我试图使用以下数据集建立一个堆叠和分组的桶形图:

代码语言:javascript
复制
dfplot  <- data.frame(organisms=c("M.musculus","D.melanogaster" ,"H.sapiens","O.sativa","S.pombe","C.familiaris",
           "G.gallus","P.falciparum","A.thaliana","C.elegans","D.rerio","B.taurus","S.cerevisiae","R.norvegicus","C.intestinalis","B.subtilis","E.coli"),                  
                      KEGGv2=c(20,7,21,126,106,62,26,80,5,5,13,306,8,35,32,104,107), 
                      KEGGv1=c(286,124,289,0,0,244,135,0,121,124,148,0,101,271,87,0,0),
                      Reactome=c(358,146,596,115,54,306,370,23,155,112,365,341,52,364,0,0,0))

# Melt the dataframe
melted <- melt(dfplot, "organisms")

# Reformat the data labels
melted$cat <- ''
melted[melted$variable == 'Reactome',]$cat <- "Reactome"
melted[melted$variable != 'Reactome',]$cat <- "KEGG"


ggplot(melted, aes(x=cat, y=value, fill=variable)) + 
  geom_bar(stat = 'identity', position = 'stack') +
  facet_grid(~ organisms)+ 
  scale_fill_manual(values=c("deepskyblue4", "lightblue1", "olivedrab2")) +
  labs(y = "Number of Pathways") +
  theme(axis.title.x=element_blank(),
        axis.text.x=element_blank(),
        axis.ticks.x=element_blank(),
        legend.title=element_blank(),
        strip.text.x = element_blank(),
        strip.background = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.background = element_blank(),
        axis.line = element_line(colour = "black"))

我的输出如下:

我在每个有机体中使用一个facet_grid,因为我希望在stack ( KEGGv1和KEGGv2)之间混合,然后与其他组Reactome进行分组。然而,在进行熔融时,x轴每个facet_grid将有两个标签(KEGG和Reactome,这是从熔融猫获得的变量)。我不想要那个标签所以我把它们去掉了。

我要做的是让每个组都有一个有机体的名字,这样17个分组栏中的每一个都会有相应的有机体的名称**。因此,我错过了,我尝试过几种方法,但我找不到合适的方法。

提前谢谢你,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-21 14:34:54

你可以做两件事来完成这个任务:

  1. 旋转小面的标签,使其在90度处绘制。
  2. 使用switch = 'x'参数在facet_grid中绘制图形下面的facet标签。

以下是完整的示例:

代码语言:javascript
复制
  ggplot(melted, aes(x=cat, y=value, fill=variable)) + 
    geom_bar(stat = 'identity', position = 'stack') +
    facet_grid(~organisms, switch = 'x')+ 
    scale_fill_manual(values=c("deepskyblue4", "lightblue1", "olivedrab2")) +
    labs(y = "Number of Pathways") +
    theme(axis.title.x=element_blank(),
          axis.text.x=element_blank(),
          axis.ticks.x=element_blank(),
          legend.title=element_blank(),
          panel.grid.major = element_blank(),
          panel.grid.minor = element_blank(),
          panel.background = element_blank(),
          axis.line.y = element_line(colour = "black"),
          strip.text = element_text(angle = 90))

我留下了默认的阴影背景,但您可以轻松地样式,您喜欢。

阿普罗二

你可能想考虑旋转这个情节。这要求您在调用facet之前使用coord_flip 翻转绘图的坐标。当我们转向另一个方向时,我们将facet参数更改为facet_grid(organisms~.)。引用x或y的所有其他参数都被替换:

代码语言:javascript
复制
  ggplot(melted, aes(x=cat, y=value, fill=variable)) + 
    geom_bar(stat = 'identity', position = 'stack') +
    coord_flip() +
    facet_grid(organisms~., switch = 'y')  +
    scale_fill_manual(values=c("deepskyblue4", "lightblue1", "olivedrab2")) +
    labs(y = "Number of Pathways") +
    theme(axis.title.y=element_blank(),
          axis.text.y=element_blank(),
          axis.ticks.y=element_blank(),
          legend.title=element_blank(),
          panel.grid.major = element_blank(),
          panel.grid.minor = element_blank(),
          panel.background = element_blank(),
          axis.line.x = element_line(colour = "black"),
          strip.text.y = element_text(angle = 180))

票数 6
EN

Stack Overflow用户

发布于 2017-11-21 14:43:46

首先,你可以把生物标签设置在条子下面,而不是上面。这是通过将参数的facet_grid函数设置为"x“来建立的(参见下面的代码)。其次,您应该在主题函数调用中删除axis.title.x=element_blank()参数。更新后的代码如下。希望这能有所帮助!

代码语言:javascript
复制
ggplot(melted, aes(x = cat, y = value, fill =variable)) + 
    geom_bar(stat = 'identity', position = 'stack') +facet_grid(~organisms, switch="x")+ 
    scale_fill_manual(values=c("deepskyblue4","lightblue1","olivedrab2"))+
    ylab("Number of pathways")+
    theme(axis.title.x=element_blank(),axis.text.x=element_blank(),axis.ticks.x=element_blank())+theme(legend.title=element_blank())+
    theme(strip.background = element_blank())+theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),panel.background = element_blank(), axis.line = element_line(colour = "black"))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47415024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档