r - 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))
)
数据:
"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
解决方案
这是因为第二张图表显示了每个州的病例数,例如新南威尔士州的 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, ...
推荐阅读
- angular - angular2-multiselect-dropdown 不禁用选择所有过滤结果
- python - 无法使用 FileResponse 或 StreamingHttpResponse 渲染 base64 文件,可以使用 HttpResponse
- android - 错误:找不到符号:变量 Build.VERSION_CODES.O_MR1
- kentico - Kentico CMS:管理页面 https 登录问题
- c++ - 如何将方法存储为地图容器中的函数指针?
- python - Python Stream Kafka - 看不到任何流数据
- r - 自动化R中的文件位置
- angular - 移除 Angular Material Pagination 中的拼接功能
- laravel - 为什么 Vue.js 在 Laravel 5.6 中没有显示任何内容?
- java - Java:如何获取列表类型