复制和自定义辅助 y 轴

jlp*_*jlp 6 r ggplot2 axis-labels

这应该很简单,但我遇到了一些错误。我想复制然后自定义辅助 y 轴的标签。

首先,这个简单的代码应该产生下图:

  ggplot(data = mpg, aes(x = displ, y = hwy)) + 
      geom_point() +
      scale_x_continuous(sec.axis = dup_axis()) +
      scale_y_continuous(sec.axis = dup_axis())
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

但我不知道为什么会出现以下错误(它在没有scale_参数的情况下工作并且我有 ggplot2 版本 2.2.1):

Error in .Call(rhs, f) : first argument must be a string (of length 1) or native symbol reference

其次,一旦 y 轴在右侧复制,我想更改刻度标签(20、30、40),例如(“a”、“b”、“c”)。

如何修复该错误并自定义辅助 y 轴的刻度标签?

Edg*_*tos 6

代码的第一部分对我使用相同版本的 ggplot2(2.2.1) 效果很好。关于你的第二个问题,使用sec_axis()可以完成工作。第一个参数是转换公式trans,因为您希望具有相同的比例但仅更改标签,然后使用~ . * 1例如:

ggplot(data = mpg, aes(x = displ, y = hwy)) + 
  geom_point() +
  scale_x_continuous(sec.axis = dup_axis()) +
  scale_y_continuous(sec.axis = sec_axis(~ . * 1, breaks = c(20,30,40), labels = c("a","b","c")))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

注意:请注意“次轴的变换必须是公式”。