使用ggplot2绘制比例条形图

时间:2017-11-23 03:41:00

标签: r ggplot2

我正在尝试使用ggplot2获取堆积条形图,其中每个条形图显示该大陆国家/地区的gdp条件。

然而,我能做的最好的事情就是让这些酒吧与该大陆国家的国家数量相等。我的代码和结果图如下。

gapminder %>% 
  mutate(gdp = pop * gdpPercap) %>% 
  ggplot() + 
    geom_bar(mapping = aes(x = continent, weight =sum(gdp), 
                           fill = country), color = "black") +
    guides(fill = FALSE) + 
    theme_bw()

我现在使用上面的代码得到的输出: enter image description here

Gapminder数据集 enter image description here

预期结果(它应该与此类似): enter image description here

2 个答案:

答案 0 :(得分:4)

我不认为这是叠条的一个很好的用例。试图为142个国家分配调色板只会造成彩虹混乱。

我可以建议树形图。

library(treemap)
library(gapminder)

gapminder %>% 
  filter(year == 2007) %>%
  mutate(gdp = pop * gdpPercap) %>% 
  treemap(., c("continent", "country"), "gdp", algorithm = "squarified")

enter image description here

答案 1 :(得分:1)

要获得必须工作的内容,您需要在stat = "identity"中设置geom_bar或仅使用geom_col。您还需要为每个国家/地区过滤一年,或者您每个国家/地区都会获得每年的部分。

library(tidyverse)

gapminder::gapminder %>% 
    mutate(gdp = pop * gdpPercap) %>% 
    group_by(country) %>% 
    filter(year == max(year)) %>% 
    ggplot(aes(x = continent, y = gdp, fill = country)) + 
    geom_col(color = "black", size = 0.2) +
    guides(fill = FALSE) + 
    theme_bw()