根据ggplot2中分类比例调整(堆叠)条形图宽度

4

我正在尝试根据类别的计数(或比例)来更改我的(堆叠)条形图宽度,作为示例,我使用了钻石数据集。我想根据每个类别(变量cut)的频率看到不同的宽度。我首先创建了一个变量cut_prop,然后使用以下代码绘制图表:

library(tidyverse)

cut_prop = diamonds %>% 
  group_by(cut) %>% 
  summarise(cut_prop = n()/nrow(diamonds))

diamonds = left_join(diamonds, cut_prop)

ggplot(data = diamonds, 
       aes(x = cut, fill = color)) + 
  geom_bar(aes(width=cut_prop), position = "fill") + 
  theme_minimal() +
  coord_flip()

这给我提供了以下条形图:

enter image description here

R 给出警告信息: 忽略未知的美学属性:宽度,很明显,它没有考虑类别比例作为条形宽度的因素,有谁能帮我解决一下吗?谢谢!


1
你是指像马赛克图一样的吗?我用过ggmosaic来做这个。我也看过这个教程,它使用了geom_rect来实现。 - camille
1个回答

5
我认为这个可行。从你离开的地方开始...
df <- diamonds %>% 
  count(cut, color, cut_prop) %>% 
  group_by(cut) %>% 
  mutate(freq = n / sum(n)) %>% 
  ungroup

ggplot(data = df,
       aes(x = cut, fill = color, y = freq, width = cut_prop)) +
  geom_bar(stat = "identity") +
  theme_minimal() +
  coord_flip()

enter image description here

基本上,我自己计算比例而不是使用 position = "fill",然后使用 stat = identity 而不是 stat = count

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接