如何调整发散条形图上叠加符号的位置并固定显示
问题描述
我已创建一幅发散条形图(divergent bar plot),需添加若干符号作为脚注标注相关信息。当前在Olive oil分面中,无法将"+"和"*"符号组合显示并同步移动;且调整绘图面板尺寸时,符号会随条形发生偏移。
创建绘图p2的代码
df_plot2 <- structure(list(gen = structure(c(10L, 10L, 10L, 9L, 9L, 9L, 8L, 8L, 8L, 7L, 7L, 7L, 6L, 6L, 6L, 5L, 5L, 5L, 4L, 4L, 4L, 3L, 3L, 3L, 2L, 2L, 2L, 1L, 1L, 1L), levels = c("TGFB2", "PIK3CB", "NLRP3", "NFE2L2", "NAMPT", "IL1B", "IL10", "IFNG", "CDKN2A", "CD86"), class = "factor"), grup_int = c(2, 3, 1, 3, 2, 1, 2, 1, 3, 2, 1, 3, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 1, 3), time = c("3", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3", "3"), RQ_gapdh = c(1.018, 0.91, 0.949, 1.001, 1.065, 0.879, 0.947, 0.76, 0.924, 1.11, 1.014, 1.022, 1.123, 0.892, 1.007, 1.057, 0.809, 0.941, 1.106, 0.931, 0.983, 1.108, 0.983, 1.1, 1.13, 0.991, 1.112, 1.257, 1.37, 1.064 ), Color = structure(c(2L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 1L, 2L, 1L, 1L, 2L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 2L), levels = c("FALSE", "TRUE"), class = "factor")), row.names = c(9L, 24L, 30L, 16L, 20L, 29L, 10L, 13L, 14L, 7L, 15L, 17L, 1L, 11L, 23L, 2L, 19L, 25L, 6L, 18L, 26L, 5L, 21L, 27L, 4L, 22L, 28L, 3L, 8L, 12L), class = "data.frame") p1 <- ggplot(data = df_plot2, aes( x = RQ_gapdh, y = gen, xmin = after_scale(1), fill = Color)) + geom_col(width = .5) + scale_fill_manual(values = c("lightseagreen", "orange2" ))+ labs( y = "Genes", x = expression(2^{-Delta*Delta*Ct}), title = "Gene expression", subtitles = "1 year post-intervention") + guides(fill = "none") + facet_wrap(~grup_int, labeller = labeller( grup_int = c( "1" = "Olive oil", "2" = "Nuts", "3" = "Low-fat diet" ) ) ) + theme(axis.text.y = element_text(face = "italic", family = "serif"))+ geom_vline(xintercept = 1, linetype = "dashed", color = "black")+ scale_x_continuous(limits = c(0.75, 1.4), breaks = c(0.75, 1, 1.4)) # Editing font size, axis: customizing the plot # ggthemes economist https://github.com/javifar/ggthemes/blob/main/R/economist.R p2 <- p1 + theme_solarized(base_size = 14) + theme(legend.position = "right", legend.title = element_blank()) + theme(axis.text.x = element_text(color = "gray0", size = 10, angle = 0, hjust = .5, vjust = .5, face = "plain"), axis.text.y = element_text(color = "gray0", size = 9, angle = 0, hjust = 1, vjust = 0, face = "plain"), axis.title.x = element_text(color = "gray0", size = 10, angle = 0, hjust = 0.5, vjust = 0.5, face = "plain"), axis.title.y = element_text(color = "gray0", size = 11, angle = 0, hjust = 1, vjust = 0.5, face = "plain"),plot.title=element_text(size=12, hjust=0.5, face="plain", colour="darkslateblue", vjust=2), plot.subtitle=element_text(size=10, hjust=0.5, face="plain", colour="darkslateblue", vjust=2), axis.ticks.x = element_line(linetype = "dashed")) p2 <- p1 + theme_solarized(base_size = 14) + theme(legend.position = "right", legend.title = element_blank()) + theme(axis.text.x = element_text(color = "gray0", size = 9, angle = 0, hjust = .5, vjust = .5, face = "plain"), axis.text.y = element_text(color = "gray0", size = 11, angle = 0, hjust = 1, vjust = 0, face = "plain"), axis.title.x = element_text(color = "gray0", size = 10, angle = 0, hjust = 0.5, vjust = 0.5, face = "plain"), axis.title.y = element_text(color = "gray0", size = 11, angle = 0, hjust = 1, vjust = 0.5, face = "plain"),plot.title=element_text(size=12, hjust=0.5, face="plain", colour="darkslateblue", vjust=2), plot.subtitle=element_text(size=10, hjust=0.5, face="plain", colour="darkslateblue", vjust=2), axis.ticks.x = element_line(linetype = "dashed")) + theme(axis.text.y = element_text(face = "italic", family = "serif"))
添加符号的代码
#CDKN2A p2 <- p2 + geom_text( data = subset(df_plot2, gen == "CDKN2A" & grup_int == "1"), aes(label = "+"), x = 1, y = "CDKN2A", vjust = 0, hjust = 8, size = 5 ) #IFNG p2 <-p2 + geom_text( data = subset(df_plot2, gen == "IFNG" & grup_int == "1"), aes(label = "+"), x = 1, y = "IFNG", vjust = 0, hjust = 10, size = 5) #NLRP3 p2 <-p2 + geom_text( data = subset(df_plot2, gen == "NLRP3" & grup_int == "1"), aes(label = "+"), x = 1, y = "NLRP3", vjust = 0, hjust = -8, size = 5) #PIK3CB p2 <-p2 + geom_text( data = subset(df_plot2, gen == "PIK3CB" & grup_int == "1"), aes(label = c("+")), x = 1, y = "PIK3CB", vjust = 0, hjust = -5, size = 5) #TGFB2 p2 <-p2 + geom_text( data = subset(df_plot2, gen == "TGFB2" & grup_int == "1"), aes(label = "+"), x = 1, y = "TGFB2", vjust = -1.2, hjust = -12, size = 5) + geom_text( data = subset(df_plot2, gen == "TGFB2" & grup_int == "1"), aes(label = "*"), x = 1, y = "TGFB2", vjust = -1.2, hjust = -13, size = 5) + geom_text( data = subset(df_plot2, gen == "TGFB2" & grup_int == "2"), aes(label = "+"), x = 1, y = "TGFB2", vjust = 0, hjust = -10, size = 5) # NAMPT p2 <-p2 + geom_text( data = subset(df_plot2, gen == "NAMPT" & grup_int == "3"), aes(label = "+"), x = 1, y = "NAMPT", vjust = 0, hjust = 10, size = 5) + geom_text( data = subset(df_plot2, gen == "NAMPT" & grup_int == "2"), aes(label = "*"), x = 1, y = "NAMPT", vjust = 0, hjust = -5, size = 5)+ geom_text( data = subset(df_plot2, gen == "NAMPT" & grup_int == "2"), aes(label = "#"), x = 1, y = "NAMPT", vjust = 0, hjust = -6, size = 5) #IL1B p2 <-p2 + geom_text( data = subset(df_plot2, gen == "IL1B" & grup_int == "2"), aes(label = "#"), x = 1, y = "IL1B", vjust = 0, hjust = -6, size = 5)
内容的提问来源于stack exchange,提问作者Javier Hernando
相关产品推荐
相关产品推荐

