График с накоплением без сложения значений по оси Y (ggplot2) - PullRequest
0 голосов
/ 30 октября 2019

Попытка создать столбчатую диаграмму с глубиной (в метрах) по оси Y и различными категориями по оси X, а затем заполнить значениями изобилия. Тем не менее, ggplot2 продолжает суммировать все значения глубины (a + b + c), так что ось Y не верна.

Я знаю, что мне нужно указать geom_bar (stat = "identity"), но этоПохоже, что это связано с осью Y, так как все группы имеют одинаковые значения, но разную распространенность.

##Data: 
Phylum  Depth   Abundance
Cnidaria    110 6
Cnidaria    90  12
Cnidaria    70  1
Cnidaria    50  4
Cnidaria    30  3
Cnidaria    20  1
Cnidaria    120 13
Cnidaria    80  3
Cnidaria    60  12
Arthropada  110 105
Arthropada  90  493
Arthropada  70  23
Arthropada  50  3
Arthropada  30  10
Arthropada  20  42
Arthropada  120 57
Arthropada  80  3
Arthropada  60  7

##Current plot: 
ggplot(data = data, aes(x = Phylum, y = Depth, fill = Abundance)) +
  geom_bar(stat = "identity")

На текущем графике выводятся данные с суммой по оси Y, равной 600 м, когда наибольшее значение должно быть только 120 м.

1 Ответ

0 голосов
/ 30 октября 2019

Хорошо, я не думаю, что это ваш код, который доставляет вам неприятности. Вместо этого, я думаю, вы, возможно, захотите рассмотреть альтернативный способ отображения ваших данных.

data = data.frame("Phylum" = c("Cnidaria", "Cnidaria", "Cnidaria", "Cnidaria","Cnidaria", "Cnidaria", "Cnidaria", "Cnidaria", "Cnidaria", "Arthropada", "Arthropada", "Arthropada", "Arthropada", "Arthropada", "Arthropada", "Arthropada", "Arthropada", "Arthropada"), "Depth" = c(110, 90, 70, 50, 30, 21, 120, 80, 60, 110, 90, 70, 50, 30, 20, 120, 80, 60), "Abundance" = c(6, 12, 1, 4, 3, 1, 13, 3, 12, 105, 493, 23, 3, 10, 42, 57, 3, 7))

Причина, по которой это выглядит так, как будто ось Y настроена, заключается в том, что значения в основном совпадают, что показанопо средним по категориям:

aggregate(.~Phylum, data, mean)

      Phylum    Depth Abundance
1 Arthropada 70.00000 82.555556
2   Cnidaria 70.11111  6.111111

Когда вы переключаете глубину и изобилие, вы получаете график, более похожий на ожидаемый:

p = ggplot(data = data, aes(x = Phylum, y = Abundance, fill = Depth))
p+geom_bar(stat = "identity")

Возможно, вы захотите рассмотреть разные участки,Например, вы можете получить более точную информацию, используя параметры «Изобилие» и «Глубина» для своей оси x или y, а затем указав категорию Phylum.

...