为什么将我的辅助轴参数位置和名称改为应用到主轴?

时间:2018-08-08 02:00:44

标签: r ggplot2

我最近更新了一个月前使用具有两个y轴的ggplot2制作的图形。第二个轴是将主轴转换为不同单位,以便与文献进行比较。

现在,可能在最新更新之后,一些辅助轴参数正在干扰主轴。我自己的图相对复杂,但是使用iris数据集的以下示例可能会产生相同的问题。

由于数据无关紧要,因此我仅在此处提供代码以绘制框架。我尝试包含图像,但目前SO的图像托管似乎存在一个严重问题。

  1. 一个简单的图形将y轴和标签放在左侧,请注意数据范围为0–2:

    ggplot(iris, aes(x=Sepal.Width, y = Petal.Width))
    
  2. 可以将仅向原始值加上100的辅助轴添加到右侧,如下所示:

    ggplot(iris, aes(x=Sepal.Width, y = Petal.Width)) + 
    scale_y_continuous(sec.axis = sec_axis(~.+100))
    
  3. 如果在第二个轴上添加名称,该名称将切换到左侧,替换主轴上的主轴标签:

    ggplot(iris, aes(x=Sepal.Width, y = Petal.Width)) + 
    scale_y_continuous(sec.axis = sec_axis(~.+100), 
    name = "bogus secondary axis")
    

这是个问题,因为我现在在主轴上有不正确的标签,而在副轴上没有标签。如果我使用labs()明确声明y轴标签也没关系,它将被相同的内容覆盖。

  1. 我尝试使用position参数指定辅助轴在右侧,但仅反转了示例2。

    ggplot(iris, aes(x=Sepal.Width, y = Petal.Width)) + 
    scale_y_continuous(sec.axis = sec_axis(~.+100), 
    name = "bogus secondary axis",
    position = 'right')
    

因此,scale_y_continuous()的附加参数将应用于主轴,而不是辅助轴。如果我只是复制主轴,那么一切都会按预期进行:

 ggplot(iris, aes(x=Sepal.Width, y = Petal.Width)) + 
  scale_y_continuous(sec.axis = dup_axis())

有人可以看到我在做什么错吗,或者告诉我现在应该如何指定这种事情?我要我的辅助轴边距并贴标签!

1 个答案:

答案 0 :(得分:1)

这对我有用。请注意name =

中的sec_axis()
library(ggplot2)

ggplot(iris, aes(x = Sepal.Width, y = Petal.Width)) +
  ylab("primary axis") +
  scale_y_continuous(sec.axis = sec_axis(~. + 100,
    name = "bogus secondary axis"))

reprex package(v0.2.0.9000)于2018-08-07创建。