Две оси Y в ggplot с огранкой: вечное разочарование - PullRequest
1 голос
/ 21 сентября 2019

Я пытаюсь создать граненый график, где у каждого «фасета» есть две оси 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 (я имею в виду 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) даже не отображается на графике прямо сейчас.Что я делаю?Я просто сдаюсь и использую базу R?

1 Ответ

1 голос
/ 21 сентября 2019

Обратите внимание, добавление вторичной оси не меняет способ отображения ваших данных;положительные числа в 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

...