R语言ggplot绘制散点图时如何仅筛选展示前五类选项
需求说明
需要基于dslabs包的2016年美国大选民调数据绘制散点图,图中仅展示排名前五的民调机构(pollster),而非全量民调机构。
- 原始代码运行输出效果:

- 预期实现效果:

实现代码
核心思路是先按指定规则筛选出排名前五的民调机构,过滤数据集后再传入ggplot绘图,以下是可直接运行的完整代码:
library(tidyverse) library(dslabs) # 加载并预处理基础民调数据 data(polls_us_election_2016) polls <- polls_us_election_2016 %>% filter(state == "U.S." & enddate >= "2016-10-31" & (grade %in% c("A+","A","A-","B+") | is.na(grade))) %>% mutate(spread = rawpoll_clinton/100 - rawpoll_trump/100) # 保留原有统计量计算逻辑 d_hat <- polls %>% summarize(d_hat = sum(spread * samplesize) / sum(samplesize)) %>% pull(d_hat) p_hat <- (d_hat+1)/2 moe <- 1.96 * 2 * sqrt(p_hat * (1-p_hat) / sum(polls$samplesize)) # 筛选排名前五的民调机构:以下示例按民调发布数量降序取前五,可按需替换排名规则 top5_pollster <- polls %>% count(pollster, sort = TRUE) %>% slice_max(n, n = 5) %>% pull(pollster) # 过滤数据后绘图 polls %>% filter(pollster %in% top5_pollster) %>% ggplot(aes(spread, pollster)) + geom_point(color = "black")
注意事项
- 原代码中
geom_point()传入的binwidth参数属于无效参数,该参数仅适用于直方图类几何对象,散点图不需要设置,已移除避免运行警告。 - 如果需要按其他规则(比如总样本量、平均民调误差等)选前五,只需修改筛选
top5_pollster部分的统计排序逻辑即可。
内容的提问来源于stack exchange,提问作者Madhav Ddas
相关产品推荐
相关产品推荐

