【问题标题】:Change secondary line axis color更改辅助线轴颜色
【发布时间】:2018-01-22 19:32:14
【问题描述】:

在ggplot2 中,如何仅在sec.axis 上修改axis.line.y(如果可能)?

    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"))

如下面的 cmets 所示,对右轴元素的完全控制现在包含在 ggplot2 的开发版本中 theme( axis.line.y.right = element_line(color = "red"), axis.ticks.y.right = element_line(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)) 这将是一个黑客。 ggplot2 在辅助轴上有点难,不会给你那么大的灵活性。因此:stackoverflow.com/questions/3099219/…
  • 谢谢,不过,如果 sec.axis 已经可用,那么有一个 ggplot2solution 就好了...
  • 基于this closed issue,我认为这可能会在ggplot2的开发版本中修复。

标签: r ggplot2 plot axis


【解决方案1】:

更新:

感谢下面的comment,这可以通过使用 的最新dev.v 来完成(现在在CRAN 版本中可用);

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"))



也许有一个直接的解决方案,但这是我能想到的使用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))

【讨论】:

  • 如果你用github更新ggplot,这个功能就没有了theme( axis.line.y.right = element_line(color = "red"), axis.ticks.y.right = element_line(color = "red"))
  • 您好,在这个问题中,当我运行主题 (axis.line.y.right = element_line(color = "red") 它说 Error in (function (el, elname) : "axis.ticks .y.right" 不是有效的主题元素名称。为什么我会收到此错误,解决方案是什么?
  • @LilyNature 你需要从 github 安装最新的开发者版本。运行这个:install.packages("devtools");devtools::install_github("tidyverse/ggplot2");library(ggplot2) 然后上面的代码应该适合你。
  • @M-- 假设我们在第二个轴上有另一个变量,称为“V1”。在不改变其他轴标题的颜色的情况下,你将如何改变它的颜色?
  • @ljh2001 在theme(...) 中使用这个axis.title.y.right = element_text(colour = "red")。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多