ggplot2中的sec_axis未显示在预期位置

时间:2019-03-11 16:06:27

标签: r ggplot2

当我在绘图中添加辅助轴时,转换公式会发生一些奇怪的事情。我很困惑,所以我创建了一个非常简单的reprex。我希望~ -.公式仅显示负数,但这不起作用。请帮忙:)

library(tibble)
library(ggplot2)

dat <- tibble(x = 1:10, y = 11:20)

pl <- ggplot(dat, aes(x = x, y = y)) +
  geom_point()

# add a secondary "negative" axis as an example
pl +
  scale_y_continuous("positive", sec.axis = sec_axis(~ -., "negative!"))

# do the same on a reversed axis
pl +
  scale_y_reverse("positive", sec.axis = sec_axis(~ -., "negative!"))

# my actual formula that isn't showing up correctly
pl +
  scale_y_reverse(sec.axis = sec_axis(
                    ~ sqrt((0.0449 * 1e6) / (. - 0.167)) - 273.15,
                    "Temperature (°C)"))

2 个答案:

答案 0 :(得分:1)

作为一种解决方法,您可以对标签进行操作,而无需变换轴。标签参数可以是一个将断点作为输入并返回标签作为输出的函数:

pl +
  scale_y_continuous("positive", 
                     sec.axis = sec_axis(trans= ~ ., labels= function(x) -x, "negative!"))

或者您可以直接使用`-`函数来保存一些键入内容:

pl +
  scale_y_continuous("positive", 
                     sec.axis = sec_axis(trans= ~ ., labels= `-`, "negative!"))

因此,对于您的实际用例,采用转换的负值,这会在辅助轴上产生正值(避免了转换错误),然后使标签成为这些正转换值的负值:

pl +
  scale_y_reverse(sec.axis = sec_axis(
    ~ -(sqrt((0.0449 * 1e6) / (. - 0.167)) - 273.15),
    labels = `-`,
    "Temperature (°C)"))

答案 1 :(得分:1)

Brian向我指出了github上的问题,他们现在mention that this will be fixed in a future release。安装此pull request的开发版本使我可以在没有其他解决方法的情况下使其正常工作:

devtools::install_github("tidyverse/ggplot2#3040")