我最近更新了一个月前使用具有两个y轴的ggplot2制作的图形。第二个轴是将主轴转换为不同单位,以便与文献进行比较。
现在,可能在最新更新之后,一些辅助轴参数正在干扰主轴。我自己的图相对复杂,但是使用iris
数据集的以下示例可能会产生相同的问题。
由于数据无关紧要,因此我仅在此处提供代码以绘制框架。我尝试包含图像,但目前SO的图像托管似乎存在一个严重问题。
一个简单的图形将y轴和标签放在左侧,请注意数据范围为0–2:
ggplot(iris, aes(x=Sepal.Width, y = Petal.Width))
可以将仅向原始值加上100的辅助轴添加到右侧,如下所示:
ggplot(iris, aes(x=Sepal.Width, y = Petal.Width)) +
scale_y_continuous(sec.axis = sec_axis(~.+100))
如果在第二个轴上添加名称,该名称将切换到左侧,替换主轴上的主轴标签:
ggplot(iris, aes(x=Sepal.Width, y = Petal.Width)) +
scale_y_continuous(sec.axis = sec_axis(~.+100),
name = "bogus secondary axis")
这是个问题,因为我现在在主轴上有不正确的标签,而在副轴上没有标签。如果我使用labs()
明确声明y轴标签也没关系,它将被相同的内容覆盖。
我尝试使用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())
有人可以看到我在做什么错吗,或者告诉我现在应该如何指定这种事情?我要我的辅助轴边距并贴标签!
答案 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创建。