如何用R的ggplot绘制指定新冠疫苗接种成功率相似图表
解决瑞典三郡市政新冠疫苗接种成功率可视化问题
步骤1:加载依赖包
先安装并加载所需R包(首次运行需执行安装命令):
install.packages(c("readxl", "ggplot2", "dplyr", "scales")) library(readxl) library(ggplot2) library(dplyr) library(scales)
步骤2:读取并预处理数据
从指定Excel工作表读取数据,筛选目标郡并计算接种成功率:
# 读取目标工作表数据 vaccine_data <- read_excel("Folkhalsomyndigheten_Covid19_Vaccine.xlsx", sheet = "Vaccinerade kommun och ålder") # 筛选Skåne、Stockholm、Västra Götaland三郡数据,计算接种成功率 # 注:请根据实际数据列名调整字段名(示例中Län=郡、Kommun=市政、Befolkning=总人口、Färdigvaccinerade=完成接种人数) target_data <- vaccine_data %>% filter(Län %in% c("Skåne", "Stockholm", "Västra Götaland")) %>% mutate(vaccination_rate = Färdigvaccinerade / Befolkning)
步骤3:补充ggplot绘图代码(核心实现)
以下代码完成要求的可视化,同时解决人口图例的科学计数法问题:
ggplot(target_data, aes(x = Kommun, y = vaccination_rate, color = Län, size = Befolkning)) + geom_point(alpha = 0.7) + # 散点图添加透明度,优化重叠点可读性 scale_y_continuous(labels = percent(accuracy = 1)) + # Y轴显示为百分比格式 scale_size_continuous(labels = label_number()) + # 强制人口图例使用常规数字,避免科学计数法 labs( title = "瑞典三大郡市政新冠疫苗接种成功率对比", x = "市政名称", y = "接种成功率", color = "所属郡", size = "市政总人口" ) + theme_bw() + theme(axis.text.x = element_text(angle = 45, hjust = 1)) # 旋转X轴标签,避免文字重叠
关键说明
scale_size_continuous(labels = scales::label_number())是解决人口图例科学计数法的核心代码,严格按要求添加即可- 若实际数据列名与示例不符,请自行调整
filter和mutate中的字段名 alpha = 0.7可缓解同区域市政点重叠的问题,提升图表清晰度
内容的提问来源于stack exchange,提问作者Kei Len
相关产品推荐
相关产品推荐

