首页 > 解决方案 > ggplot 填充属性更改比例

问题描述

我有一个简单的数据框,并使用 ggplot 使用代码创建条形图:

ggplot(data=data_cases,aes(x = k,y = val)) + 
  stat_summary(fun.y=sum, geom = "bar") +
  scale_x_discrete(name="Type",
                   labels=c('A&R','A&E','C&E'))

此代码生成所需的结果。但是,当我添加一个填充属性来为图形的各个部分着色时,它会改变 y 比例。在下图中,左边的图片具有正确的比例,右边的图片是设置填充属性时产生的(ggplot(data=data_cases,aes(x = k,y = val, fill=state))

ggplot 输出

数据:

"k","state","val"
"A&C","SA ",3
"C&E","SA ",2
"A&C","NSW",29
"A&E","NSW",10
"C&E","NSW",11
"C&E","NT ",1
"A&C","WA ",3
"A&E","WA ",1
"C&E","WA ",4
"A&C","VIC",24
"A&E","VIC",1
"C&E","VIC",15
"A&C","QLD",7
"A&E","QLD",2
"C&E","QLD",17

标签: rggplot2

解决方案


这是因为第二张图表显示了每个州的病例数,例如新南威尔士州的 A&R 类型病例数接近 30。每个条从 0 开始。

如果你想和原来的一样,那么所有的条都应该堆叠在一起:使用position='stack'

ggplot(data=data_cases,aes(x = k,y = val)) + 
  stat_summary(fun.y=sum, geom = "bar", position="stack") + # <---
  scale_x_discrete(name="Type",
                   labels=c('A&R','A&E','C&E'))

在此处输入图像描述

ggplot 有很多这样的职位。?position_dodge, ?position_fill, ?position_stack, ?position_identity, ...


推荐阅读