如何在ggplot2中更改辅助线轴颜色

AJM*_*JMA 12 plot r ggplot2

ggplot2,我怎么能修改axis.line.y只对sec.axis(如果可能的话)?

    p <- ggplot(mtcars, aes(cyl, mpg)) +
      geom_point()

    # Create a simple secondary axis
    p + scale_y_continuous(sec.axis = sec_axis(~.+10)) +
      theme(axis.line.y = element_line(color = "red"),
            # I can modify text color but not sure about line?
            axis.text.y.right = element_text(color = "red"))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

更新:如评论beloew所示,对右轴元素的完全控制现在包含在ggplot2的开发版本中 theme( axis.line.y.right = element_line(color = "red"), axis.ticks.y.right = element_line(color = "red"))

M--*_*M-- 9

更新:

感谢下面的评论,这可以通过使用ggplot2的最新dev.v来

install.packages("devtools")
devtools::install_github("tidyverse/ggplot2")
library(ggplot2)

p + theme( axis.line.y.right = element_line(color = "red"), 
       axis.ticks.y.right = element_line(color = "red"))
Run Code Online (Sandbox Code Playgroud)


也许有一个直接的解决方案,但这是我可以考虑使用的一种hack /解决方法geom_segment

p <- ggplot(mtcars, aes(cyl, mpg)) +
     geom_point()

#get the ylim and xlim
xmin <- min(ggplot_build(p)$layout$panel_ranges[[1]]$x.range) 
xmax <- max(ggplot_build(p)$layout$panel_ranges[[1]]$x.range)
ymin <- min(ggplot_build(p)$layout$panel_ranges[[1]]$y.range)
ymax <- max(ggplot_build(p)$layout$panel_ranges[[1]]$y.range)

# Create a simple secondary axis
p + scale_y_continuous(sec.axis = sec_axis(~.+10)) +
    theme(axis.text.y.right = element_text(color = "red"))+
    geom_segment(aes(x=xmax+0.2,xend=xmax+0.2,
                     y=ymin-2,yend=ymax+2), color = "red") +
    coord_cartesian(xlim=c(xmin, xmax), ylim=c(ymin, ymax))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  • 如果您使用github更新ggplot,则不会添加此功能`theme(axis.line.y.right = element_line(color =“ red”),axis.ticks.y.right = element_line(color =“ red”))`` (8认同)