ggplot中带有切面的两个Y轴:永恒的挫败感

时间:2019-09-20 22:51:08

标签: r ggplot2 facet

我正在尝试制作一个多面图,其中每个“小面”都有两个y轴和对应于它们的两组数据。我几乎在这里阅读过有关双Y轴争议的每篇文章,但是在我的领域,这是一种非常常见的显示数据的方式,我只是希望能够使其发挥作用,该死。

我的数据如下:

ShellNum   SampNum    AccDist d13C  d18O  Species  Age   Type Univ
1 290819-1 290819-1 1  137.41 2.37 -0.85 larensis 17.4 Fossil  UdN
2 290819-1 290819-1 2  132.41 2.42 -1.22 larensis 17.4 Fossil  UdN
3 290819-1 290819-1 3  127.41 2.78 -1.25 larensis 17.4 Fossil  UdN
4 290819-1 290819-1 4  120.71 3.05 -1.41 larensis 17.4 Fossil  UdN
5 290819-1 290819-1 5  114.01 2.86 -1.47 larensis 17.4 Fossil  UdN
6 290819-1 290819-1 6  107.31 2.81 -1.34 larensis 17.4 Fossil  UdN

我正在用ShellNum(在约800行中共有25个不同的值)进行分析,我想在两个不同的轴上绘制d18O和d13C值(右侧为d18O,左侧为d13C)。最好是我想手动设置轴的限制,但是现在我试图在sec_axis中工作并对其进行缩放。

这是我的代码:

fossils.all <- ggplot(fossils, aes(x = AccDist)) +
  geom_point(aes(y = d18O)) +
  geom_line(aes(y = d18O)) +
  geom_point(aes(y = d13C), color = "blue") +
  geom_line(aes(y = d13C), color = "blue") +
  scale_y_continuous(limits = c(-3, 0),
                     sec.axis = sec_axis(~.+2*2, name = "d13C")) +
  facet_wrap( ~ ShellNum, ncol = 5) 
fossils.all

我收到以下错误: “ geom_path:每个组仅包含一个观察值。您是否需要 调整小组的审美?”

第二个数据系列(d13C)甚至现在都没有显示在绘图上。我该怎么办?我会放弃使用基数R吗?

1 个答案:

答案 0 :(得分:1)

请注意,添加辅助轴不会更改数据的映射方式。 d13C中的正数仍将显示在主y轴的正区域中(如果将其限制限制为c(-3, 0),则将其隐藏,除非您自己移动这些值。

在这里,我将d13C数据下移4,然后将副轴刻度上移4。

fossils.all <- ggplot(fossils, aes(x = AccDist)) +
  geom_point(aes(y = d18O)) +
  geom_line(aes(y = d18O)) +
  geom_point(aes(y = d13C-4), color = "blue") +
  geom_line(aes(y = d13C-4), color = "blue") +
  scale_y_continuous(limits = c(-3, 0),
                     sec.axis = sec_axis(~.+4, name = "d13C")) +
  facet_wrap( ~ ShellNum, ncol = 5) +
  theme(axis.title.y.right = element_text(color = "blue"),
        axis.text.y.right = element_text(color = "blue"))
fossils.all

enter image description here