多层geom_bar阴影图例

qjp7pelc  于 2023-10-13  发布在  其他
关注(0)|答案(1)|浏览(107)

我有一个非常琐碎的问题,但由于某种原因,我无法找到解决方案。
本质上,我有一个 stackedgeom_bar图,我在这里查看四个不同样本的插入和删除。我还比较了两种不同的方法,第二种方法为两个变量提供了更高的检测值。
我能够生成一个图,在图例中显示不同的颜色为不同的变量;不过,我希望加上一个“阴影”图例,说明所采用的两种不同方法:参考分别为较暗阴影,为较亮阴影。
有没有一个简单的方法来做到这一点,而不必诉诸刻面?(我尽量让故事尽可能简单。提前感谢!* 见下文 * 的例子。[![在此输入图像描述][1]][1]和code

library(grid)
library(ggh4x)
library(readxl)
library(scales)
library(ggdark)
library(ggpubr)
library(gtable)
library(plotly)
library(ggplot2)
library(ggrepel)
library(forcats)
library(reshape2)
library(ggchicklet) #round column
library(RColorBrewer)

excel_variants <- read_excel("/path/to/.xlsx")

df_variants <- data.frame(excel_variants)

df_variants$sample <- factor(df_variants$sample, levels=c('HG002', '6103671', '6103673', '6103675'))
df_variants$variant_type <- factor(df_variants$variant_type, levels=c('INS', 'DEL'))
df_variants$approach <- factor(df_variants$approach, levels=c('reference', 'graph'))

### PLOT THE DATA
plot <- 
  ggplot(df_variants, aes(x=sample, y=count, fill=variant_type)) + geom_bar(stat='identity', position='dodge', color='black', width=.3, alpha=.6) + scale_fill_manual(values=brewer.pal(12, "Paired")[c(7, 8)]) + theme_bw() +
  
  theme(plot.title=element_text(face='bold.italic', hjust=.5), legend.title=element_text(face='italic'), legend.position='bottom', legend.direction='horizontal') + 
  ggtitle("INDELs gain") + guides(fill=guide_legend(title='variant type', title.position='top', title.hjust=.5))
plot

ggsave(filename = "variants.png", width=6.5, height=5)
ui7jx7zq

ui7jx7zq1#

我实际上想出了一个可能的解决方案,尽管代码不是很优雅,我最终绘制了一个新的条形图,具有相应的比例(ggnewscale),然后将计数设置为
Y轴为零。* 见下文 *

code

library(grid)
library(ggh4x)
library(readxl)
library(scales)
library(ggdark)
library(ggpubr)
library(gtable)
library(plotly)
library(ggplot2)
library(ggrepel)
library(forcats)
library(reshape2)
library(ggchicklet) #round column
library(ggnewscale)
library(RColorBrewer)

excel_variants <- read_excel("/path/to/.xlsx")

df_variants <- data.frame(excel_variants)

df_variants$sample <- factor(df_variants$sample, levels=c('HG002', '6103671', '6103673', '6103675'))
df_variants$variant_type <- factor(df_variants$variant_type, levels=c('INS', 'DEL'))
df_variants$approach <- factor(df_variants$approach, levels=c('reference', 'graph'))

### PLOT THE DATA
plot <- 
  ggplot(df_variants) +
  
  geom_bar(mapping=aes(x=sample, y=count, fill=variant_type), stat="identity", position="dodge", width=.3, alpha=.6) + 
  scale_fill_manual(values=brewer.pal(12, "Paired")[c(7, 8)], guide=guide_legend(title="variant type", ncol=2, title.position="top", title.hjust=.5)) + 
  
  new_scale_fill() +
  
  geom_bar(mapping=aes(x=sample, y=count*0, fill=approach), stat="identity", position="dodge", width=.3, alpha=.6) + 
  scale_fill_manual(values=brewer.pal(9, "Greys")[c(7, 3)], guide=guide_legend(title="approach", ncol=2, title.position="top", title.hjust=.5)) +
  
  theme_bw() + theme(plot.title=element_text(face='bold.italic', hjust=.5), legend.title=element_text(face='italic'), legend.position='bottom', legend.direction='horizontal') + 
  ggtitle("INDELs gain")
plot

ggsave(filename = "variants.png", width=6.5, height=5)

相关问题