1

当我在绘图中添加辅助轴时,转换公式会发生一些奇怪的事情。我很困惑,所以我创建了一个非常简单的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)"))
4

2 回答 2

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)"))
于 2019-03-11T16:15:44.230 回答
1

Brian向我指出了 github 上的问题,他们现在提到这将在未来的版本中修复。安装此拉取请求的开发版本使我无需其他解决方法即可使其正常工作:

devtools::install_github("tidyverse/ggplot2#3040")
于 2019-03-11T17:15:53.180 回答