R:如何在ggplot2中制作单个堆积的条形图

时间:2018-08-27 03:46:50

标签: r ggplot2 bar-chart visualization

Ancestry <- data.frame(Race = c("European", "African American", "Asian", "Hispanic", "Other"), Proportion = c(40, 30, 10, 15, 5))
Ancestry %>% 
ggplot(aes(y = Proportion, fill = Race)) + 
  geom_bar(stat="identity", colour="white")

运行上面的代码会给我以下错误:

Warning in min(x, na.rm = na.rm) :
  no non-missing arguments to min; returning Inf
Warning in max(x, na.rm = na.rm) :
  no non-missing arguments to max; returning -Inf
Warning in min(diff(sort(x))) :
  no non-missing arguments to min; returning Inf
Warning in x - width/2 :
  longer object length is not a multiple of shorter object length
Warning in x + width/2 :
  longer object length is not a multiple of shorter object length
Error in data.frame(list(y = c(40, 30, 10, 15, 5), fill = c(3L, 1L, 2L,  : 
  arguments imply differing number of rows: 5, 2947

我正在寻找创建类似于此的堆叠式条形图:

enter image description here

2 个答案:

答案 0 :(得分:4)

您需要为x轴创建一个虚拟变量。然后使用类似于geom_col的{​​{1}}来绘制堆叠的条形图,再用geom_bar(stat = "identity")将文本放在条形上。

您显示的情节使用了geom_text软件包中的theme_economist

ggthemes

library(tidyverse)

Ancestry <- data.frame(Race = c("European", "African American", "Asian", "Hispanic", "Other"), 
                       Proportion = c(40, 30, 10, 15, 5))

Ancestry <- Ancestry %>% 
  mutate(Year = "2006")

ggplot(Ancestry, aes(x = Year, y = Proportion, fill = Race)) +
  geom_col() +
  geom_text(aes(label = paste0(Proportion, "%")),
            position = position_stack(vjust = 0.5)) +
  scale_fill_brewer(palette = "Set2") +
  theme_minimal(base_size = 16) +
  ylab("Percentage") +
  xlab(NULL)

reprex package(v0.2.0.9000)创建于2018-08-26。

答案 1 :(得分:1)

我们可以创建一个虚拟变量以将所有小肠分组为一组,然后使用// ... // 'Items' is the Mongoose collection model. const itemResult = await Items.find({}).exec(); if(itemResult.length === 0) { const itemsSeedDataRaw = fs.readFileSync(`${__dirname}/data/items.json`, 'utf8'); const itemsSeedData = EJSON.parse(itemsSeedDataRaw); await Items.insertMany(itemsSeedData); } // ... 创建堆积的条形图,并使用geom_bar命名geom_text

Proportions

enter image description here