ggplot2: объединить команды позиционирования position_nudge и position_stack - PullRequest
2 голосов
/ 17 апреля 2019

Я хочу создать график со сложенными барами и смещением на 50% вправо, чтобы отметки были между барами.

library(tidyverse)

df <- tribble(~Station, ~Direction1, ~Direction2,
             "A", 432, 485,
             "V", 543, 345,
             "B", 435, 457,
             "Q", 0, 0)

df$Station <- factor(df$Station, levels=unique(df$Station))

df = gather(df, Direction1, Direction2, key = "Direction", value = "Passengers")

На первом графике показаны сгруппированные столбцы по желанию:

ggplot(data = df, aes(x = Station, y = Passengers, fill = Direction)) + 
  geom_bar(stat = "identity", position = position_stack())

На втором графике столбцы смещены к середине между тиками, но столбцы теперь отображаются друг за другом:

ggplot(data = df, aes(x = Station, y = Passengers, fill = Direction)) + 
  geom_bar(stat = "identity", position = position_nudge(x = 0.5))

Как мне объединить 2 команды позиционирования?

1 Ответ

2 голосов
/ 18 апреля 2019

Следующее должно служить вашей цели. Вам не нужно указывать позицию, если вы хотите position_stack(), так как это аргумент позиции по умолчанию в geom_bar / geom_col.

(Кстати, вы можете рассмотреть вопрос о переключении с geom_bar на geom_col, поскольку последний использует stat = "identity" по умолчанию. Меньше ввода.)

ggplot(data = df, 
       aes(x = as.numeric(Station) + 0.5, y = Passengers, fill = Direction)) +
  geom_col() +
  scale_x_continuous(name = "Station",
                     limits = range(as.numeric(df$Station)),
                     breaks = unique(sort(as.numeric(df$Station))),
                     labels = levels(df$Station))

plot

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