更改特定网格线的颜色ggplot2 R脚本

Change the color of specific gridline ggplot2 R script

我一直在尝试使用 ggplot2 绘制我的 2 向交互式箱线图,到目前为止我非常成功。因为我希望观众能够根据他们是消极的和积极的来比较结果,我认为在 y=0 处更改网格线的颜色会很整洁;我搜索了很多,我在网上找不到任何类似的问题。我什至尝试自己操纵 theme() 功能。

我意识到次要网格线不能有标签,如果次要网格线和主要网格线重叠,该行将继承主要行的主题特征。因此,我可以将 y=0 转换为不带任何标签的次网格线,或者我可以将 y=0 作为主线,但其余部分将是次要的,因此不显示任何标签。 (我显然不希望所有的网格线都比 y=0 暗,因为那样它就不会很明显。

下图显示了第一种情况:

p + scale_y_continuous(expand = c(0, 0), breaks = c(-40, 40, -20, 20), minor_breaks = c(0))  
  +theme(panel.grid.minor.y = element_line(color="#54545B"))

此图表显示第二种情况:

p + scale_y_continuous(expand = c(0, 0), breaks = seq(-40, 40, 40), minor_breaks = c(-20, 20)) 
  +theme(panel.grid.major.y = element_line(color="#54545B"))

有人遇到同样的问题吗?有没有什么好的解决方案可以在不使用 Photoshop(手动操作图表!)的情况下做到这一点?

我会使用 geom_hline(yintercept = 0)。在 geom_boxplot 之前指定它,以便它位于框下方的图层中。

示例数据:

set.seed(123)
data.frame(x = rep(c("A", "B"), each = 10), 
           y = sample(-100:100, 20, replace = TRUE)) %>% 
ggplot(aes(x, y)) + 
  geom_hline(yintercept = 0) + 
  geom_boxplot()

除了 neilfws 的回复之外,将您的颜色代码添加到 geom_hline() 中的 color 参数中。我编辑了 neilfw 的代码以包含以下内容:

set.seed(123)
data.frame(x = rep(c("A", "B"), each = 10), 
           y = sample(-100:100, 20, replace = TRUE)) %>% 
  ggplot(aes(x, y)) + 
  geom_hline(yintercept = 0,color="#54545B") + 
  geom_boxplot()