ggplot 中带有分面的两个 y 轴:永恒的挫败感

Two y-axes in ggplot with faceting: eternal frustration

我正在尝试制作多面图,其中每个 'facet' 都有两个 y 轴和与之对应的两组数据。我在这里读过几乎所有 post 关于双 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 分面(它有 25 个不同的值,总共超过 800 行)我想在两个不同的轴上绘制 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) 现在甚至没有出现在图中。我该怎么办?我要放弃并使用 base R 吗?

请注意,添加辅助轴不会改变数据的映射方式; 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