Как добавить значения оси Y на гистограмму в r, используя ggplot и geom_bar ()? - PullRequest
0 голосов
/ 03 мая 2020

Привет. Я пытался суммировать свой набор данных по сумме определенного столбца и напрямую использовал ggplot и geom_bar () вместо использования библиотек tidyvers и dplyr.

Я читал о весе aestheti c и что он может помочь в построении гистограммы как суммы конкретной функции вместо счетчика, и это сработало.

Проблема в том, что я не могу нанести значение y на верхнюю часть столбцов, поскольку я не знаю, как это сделать. я должен написать geom_text (????) код:

p1<-ggplot(df, aes(x= ageBracket, fill= movement, **weight= amount**))+ geom_bar(width= 0.5, position= 'dodge')+ theme_hc()+scale_x_discrete('Age Group', limits=c("16 to 25 years", "26 to 35 years", "36 to 45 years", "> 46 years"))+ theme(legend.position= "bottom",legend.background = element_rect(fill="lightblue", size=0.2, linetype="solid"))+ scale_fill_brewer(palette = "Dark2")+ scale_y_continuous("Amount per Age Group",labels = comma)+ **geom_text(?????)**
print(p1)

Blockquote

Здесь заполнение помогло мне выделить бары, которые я уклонился, вес имеет помог мне суммировать данные на основе фильтров: motion & ageBracket, я просто хочу, чтобы значения по оси Y находились в верхней части соответствующей панели, и не хочу создавать отдельный фрейм данных. Что мне делать ??

1 Ответ

0 голосов
/ 03 мая 2020

Текущая версия ggplot2 не позволяет использовать метки в geom_text (), когда используется весовая эстетика c. Вам нужно будет обобщить фрейм данных, а затем сделать это обычным способом, используя метку aestheti c.

На самом деле, требуется не так много дополнительной работы, как показано с использованием набора данных mtcars. Требуются только две дополнительные строки, и вам не нужно создавать новый фрейм данных, если вы передаете результаты вперед.

library(ggplot2)
library(dplyr)
data(mtcars)

(1) Использование веса aestheti c для суммирования переменной mpg на am и cyl. Невозможно добавить метки к столбцам (6 строк).

mtcars %>%
  mutate(am=factor(am, labels=c("auto","manual")), cyl=factor(cyl)) %>%
  ggplot(aes(x=cyl, fill=am, weight=mpg)) + 
  geom_bar(width=0.5, position='dodge') +
  labs(y="Total miles/gallon", x="Cylinders", fill="Transmission") +
  theme_minimal()

(2) Сначала суммируя данные, затем используя метку aestheti c с geom_text, можно добавлять метки к столбцам (2 дополнительные строки).

mtcars %>%
  mutate(am=factor(am, labels=c("auto","manual")), cyl=factor(cyl)) %>%
  group_by(cyl, am) %>%  # extra
  summarise(n = sum(mpg)) %>% # extra
  ggplot(aes(x=cyl, fill=am, y=n, label=n)) + 
  geom_col(width=0.5, position='dodge') +
  geom_text(position=position_dodge(0.5), vjust=-0.25) + 
  labs(y="Total miles/gallon", x="Cylinders", fill="Transmission") +
  theme_minimal()

enter image description here

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