如何将含职业群体占比的字符串转换为DataFrame用于ggplot2绘图?
嘿,我来帮你搞定把这段职业占比数据转成DataFrame再用ggplot2绘图的事儿!下面是一步步的解决方案:
1. 把字符串数据转换成结构化DataFrame
首先咱们得把你给出的非结构化文本转换成R能处理的DataFrame。注意你的数据里用逗号作为小数点分隔符,后续要处理成数值类型才行。
这里我先把你提供的内容整理成结构化数据(最后一个职业你没写完,我填了个示例值,你记得替换成真实数据哈):
# 先加载需要的工具包 library(tidyverse) # 构建原始数据框 job_stress_data <- tibble( 职业群体 = c( "管理人员", "技术人员及同等非技术职业", "学术职业", "设备与机器操作员", "办公室职员及商务雇员", "手工业及相关职业", "服务职业及销售人员" ), 受困扰占比 = c("26,2", "19,6", "18,3", "15,4", "13,4", "12,9", "12,0") ) # 把逗号替换成点,转换为数值类型 job_stress_data <- job_stress_data %>% mutate(受困扰占比 = as.numeric(str_replace(受困扰占比, ",", ".")))
2. 用ggplot2绘制可视化图表
接下来咱们用ggplot2做一个清晰的条形图,直观展示各职业的占比差异:
# 绘制条形图 ggplot(job_stress_data, aes(x = reorder(职业群体, 受困扰占比), y = 受困扰占比)) + geom_bar(stat = "identity", fill = "#4A6FA5", alpha = 0.85) + coord_flip() + # 翻转坐标轴,避免长职业名称挤在一起 labs( title = "2013年各职业群体受时间压力与工作超负荷困扰的占比", x = "职业群体", y = "占比(%)", caption = "数据来源:你的原始统计数据" ) + theme_minimal() + theme( plot.title = element_text(hjust = 0.5, size = 14, face = "bold"), axis.title = element_text(size = 12), axis.text = element_text(size = 10) )
小说明:
- 用
reorder函数让条形按占比从小到大排序,更方便对比; coord_flip翻转了坐标轴,解决了长职业名称显示重叠的问题;- 颜色和主题都可以根据你的喜好调整,比如把
fill改成你喜欢的颜色代码就行。
内容的提问来源于stack exchange,提问作者Leon
相关产品推荐
相关产品推荐

