使用sec.axis

时间:2019-05-29 20:14:56

标签: r ggplot2

我正在尝试绘制两组数据:ch4(数据规模为〜2e-06)和海拔(数据规模为〜10)。我在sec.axis中使用ggplot2命令。我无法正确缩放两个数据集。如果我未在scale_y_continuous内使用限制,则ch4数据将显示为一条平线,因为左手轴​​已按比例缩放。如果我在scale_y_continuou s的ch4数据图中包含了限制,但是海拔高度根本没有显示(即使右手轴刻度处于适当的刻度上),有人可以帮我弄清楚我在做什么这里做错了。

示例数据:

timestamp  ch4        alt

47232.42 1.923e-06  0.44

47232.57 1.908e-06  1.38

47232.77 1.931e-06  5.93

47233.03 1.946e-06  12.01

47233.20 1.904e-06  6.43

47233.43 1.913e-06  0.42

ch4是一条平线的示例代码:

basicplot <- ggplot(data=mydata, aes(x=timestamp)) +

  geom_line(aes(y=ch4), color="red") +

  geom_line(aes(y=alt), color="blue") +

  scale_y_continuous(sec.axis = sec_axis(~ . * 20/0.000002, name="altitude"))

print(basicplot)

不显示海拔高度的示例代码(即使右手刻度看起来还可以):

basicplot <- ggplot(data=mydata, aes(x=timestamp)) +

  geom_line(aes(y=alt), color="blue") +

  geom_line(aes(y=ch4), color="red") +

  scale_y_continuous(sec.axis = sec_axis(~ . * 20/0.000002, name="altitude"), limits = c(0, 0.000005))

print(basicplot)

1 个答案:

答案 0 :(得分:0)

scale_coeff <- 20/0.000002

ggplot(data=mydata, aes(x=timestamp)) +
  geom_line(aes(y=alt / scale_coeff), color="blue") +
  geom_line(aes(y=ch4), color="red") +
  scale_y_continuous(name = "ch4", 
                     sec.axis = sec_axis(~ . * scale_coeff, name="altitude"))  +
  theme(axis.text.y.left = element_text(color = "red"),
        axis.title.y.left = element_text(color = "red"),
        axis.text.y.right = element_text(color = "blue"),
        axis.title.y.right = element_text(color = "blue"))

enter image description here

mydata<- read.table(header = T, stringsAsFactors = F,
  text = "timestamp  ch4        alt
47232.42 1.923e-06  0.44
47232.57 1.908e-06  1.38
47232.77 1.931e-06  5.93
47233.03 1.946e-06  12.01
47233.20 1.904e-06  6.43 
47233.43 1.913e-06  0.42")