Во-первых. Проще ответить, когда вы помещаете фрагмент своих данных в свое сообщение, как уже предложено @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")