You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整发散条形图上叠加符号的位置并固定显示

问题描述

我已创建一幅发散条形图(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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 04:42:01