Использование числовых данных c для создания гистограммы в ggplot - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть данные, включающие различные демографические c и экономические c данные по каждому округу в Соединенных Штатах. С успехом я суммировал эти данные, чтобы дать мне итоги по каждому штату. Я использую только определенные состояния в моем анализе, изложенном ниже. Фрейм данных

Я хочу создать гистограмму с разбивкой по полу для каждого штата (сколько мужчин и женщин в каждом штате). Я попытался следующий код и получил этот вывод:

p1 <- ggplot(MW_15, aes(y="2015 Pop", x=State)) + geom_bar(position="fill", stat="identity")
p1 + ylab("Population")

Вывод кода

Это форматирование моих данных или код, который я использую (скорее всего, комбинация обоих), что мешает мне получить чувственный результат?

1 Ответ

1 голос
/ 19 апреля 2020

Во-первых. Проще ответить, когда вы помещаете фрагмент своих данных в свое сообщение, как уже предложено @RuiBarrads. Во-вторых, при использовании неуклюжих имен var, таких как «2015 Pop» в aes, вы должны заключать их в кавычки, а не в двойные кавычки. В противном случае ggplot2 не будет рассматривать их как имя переменной. В третьих. Чтобы составить график численности или доли населения в разбивке по полу, вам необходимо преобразовать свой df в длинный формат, используя, например, tidyr::pivot_longer. Таким образом, мужчины и женщины становятся категориями одного вар, который мы можем отобразить на fill эстету c. Попробуйте это

library(dplyr)
library(tidyr)
library(ggplot2)

p1 <- tidyr::pivot_longer(MW_15, -c("State", "2015 Pop"), names_to = "gender", values_to = "num") %>% 
  ggplot(aes(x=State, y=num, fill = gender)) + 
  geom_bar(position="fill", stat="identity")
p1 + ylab("Population")
...