Объединить два участка в ggplot? - PullRequest
0 голосов
/ 16 апреля 2019

Мне нужно создать ggplot, представляющий собой столбцовый график, наложенный линейным графиком. Линейный график показывает средние значения, а столбчатый график показывает, как средние значения соотносятся с эталонными значениями. Мне удалось создать два отдельных графика в ggplot, но у меня возникли проблемы с их объединением.

Мой линейный сюжет выглядит так:

enter image description here

И создан с использованием этого кода:

benchMarkLine <- ggplot(UEQScores, aes(x=Scale, y=Score, group=1)) +
  geom_line(size = 1.4, colour = "black") +
  geom_point(size = 2.4, colour = "black") +
  scale_y_continuous(name = "Score", breaks = seq(0, 2.5, 0.25), limits = c(0, 2.5)) +
  scale_x_discrete(name = "Scale") +
  ggtitle("Mean Scores") +
  theme_bw() + # Set black and white theme +
  theme(plot.title = element_text(hjust = 0.5, size=10), # Centre plot title
        panel.grid.major = element_blank(), # Turn off major gridlines
        panel.grid.minor = element_blank(), # Turn off minor gridlines
        axis.title.x = element_text(size=10),
        axis.text.x = element_text(angle=30, vjust=0.6),
        axis.title.y = element_text(size=10))
benchMarkLine

Сюжет моей колонки выглядит так:

enter image description here

И был создан со следующим кодом:

benchmarkColPlot <- ggplot(benchmark_long, aes(x=factor(Scale, scaleLevels), y=value, fill=factor(cat, bmLevels))) + 
  geom_col(position="fill") +
  scale_fill_manual(values = bmColours) +
  scale_y_continuous(name = "Score", breaks = seq(-1.0, 1.0, 0.25), limits = c(-1, 1)) +
  scale_x_discrete(name = "Scale") +
  ggtitle("Benchmark Scores") +
  theme_bw() + # Set black and white theme +
  theme(plot.title = element_text(hjust = 0.5, size=10), # Centre plot title
        panel.grid.major = element_blank(), # Turn off major gridlines
        panel.grid.minor = element_blank(), # Turn off minor gridlines
        axis.title.x = element_text(size=10),
        axis.text.x = element_text(angle=30, vjust=0.6),
        axis.title.y = element_text(size=10),
        legend.title = element_blank())
benchmarkColPlot

Как я могу объединить эти два? Я попытался вставить geom_line(UEQScores, aes(x=Scale, y=Score, group=1)) + выше geom_col(position="fill") + в коде столбца, но я просто получаю следующую ошибку:

Error: `mapping` must be created by `aes()`

Как мне объединить эти два графика?


Хорошо, я отказался от этого - я только что создал диаграмму в Excel, поскольку мне кажется, что мне немного проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...