如何在R Studio中使用ggplot2制作箱线图叠加散点的柱状图?
求助解答:用ggplot2制作信任均值横向排序条形图
我是R编程新手,想复现数据分析,需要在R Studio里用ggplot2制作类似示例图的可视化。已经通过以下代码提取出均值数据集,也得到了对应的输出结果,但查了ggplot2 cheatsheet还是搞不清这个可视化的类型和实现方法,来求助。
提取均值的代码
mean_values_polVertrauen <- polVertrauen %>% summarize( BUNDESVERFASSUNGSGERICHT = mean(pt02), BILDUNG = mean(pt11), POLIZEI = mean(pt14), JUSTIZ = mean(pt08), GESUNDHEITSWESEN = mean(pt01), VERWALTUNG = mean(pt04), BUNDESTAG = mean(pt03), BUNDESREGIERUNG = mean(pt12), EUROPKOMMISSION = mean(pt19), EUROPPARLAMENT = mean(pt20), PARTEIEN = mean(pt15), )
输出的均值数据集
| 序号 | 机构名称 | 信任均值 |
|---|---|---|
| 1 | BUNDESVERFASSUNGSGERICHT | 4.249473 |
| 2 | BILDUNG | 4.200120 |
| 3 | POLIZEI | 3.950045 |
| 4 | JUSTIZ | 3.579898 |
| 5 | GESUNDHEITSWESEN | 3.941920 |
| 6 | VERWALTUNG | 3.486909 |
| 7 | BUNDESTAG | 3.058381 |
| 8 | BUNDESREGIERUNG | 3.055673 |
| 9 | EUROPKOMMISSION | 2.512489 |
| 10 | EUROPPARLAMENT | 2.553416 |
| 11 | PARTEIEN | 2.190190 |
解决方案:横向排序条形图实现
你要做的是横向排序条形图,步骤和代码如下:
- 数据排序:先把机构按信任均值从高到低排序,这样绘图时条形会从上到下依次递减,和示例图一致
- 绘图代码:用
ggplot2的geom_col()绘制条形,coord_flip()翻转坐标轴实现横向,再添加数值标签和调整主题
library(ggplot2) library(dplyr) # 对数据集按信任均值降序排序,同时把机构名称转为因子(固定顺序) mean_values_sorted <- mean_values_polVertrauen %>% arrange(desc(value)) %>% mutate(variable = factor(variable, levels = variable)) # 绘制横向条形图 ggplot(mean_values_sorted, aes(x = value, y = variable)) + geom_col(fill = "#3498db") + # 设置条形填充色,可自行修改 geom_text(aes(label = round(value, 2)), hjust = -0.1, size = 3.5) + # 添加保留两位小数的数值标签 labs( title = "各机构信任均值", x = "信任均值", y = "机构名称" ) + xlim(0, max(mean_values_sorted$value) + 0.5) + # 扩展x轴范围,避免标签超出 theme_minimal() + # 使用简洁的主题 theme( plot.title = element_text(hjust = 0.5, size = 14, face = "bold"), axis.title.x = element_text(size = 12), axis.title.y = element_text(size = 12), axis.text = element_text(size = 10) )
代码说明
geom_col():因为我们已有计算好的均值,用这个函数直接绘制对应高度的条形(如果是原始数据统计用geom_bar(stat="identity")效果一样)arrange(desc(value)):按均值降序排序,mutate(factor(...))是为了让ggplot按排序后的顺序显示机构,不会自动按字母排序geom_text():在条形右侧添加数值标签,hjust=-0.1让标签和条形保持一点距离xlim():扩展x轴右侧范围,防止数值标签超出画布
内容的提问来源于stack exchange,提问作者geom_point711
相关产品推荐
相关产品推荐

