You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中用不同大小气泡可视化调查答案频率及识别图表类型

图表名称

这种以气泡大小对应调查答案频率的可视化图表,通常称为类别频率气泡图(也可直接称频率气泡图),这类图表常用于民意调查场景,通过气泡面积直观呈现不同选项的占比差异,皮尤研究中心等机构常使用这类图表简化数据对比。

R语言复现方法

可以用ggplot2包快速实现,以下是具体步骤和示例代码:

1. 准备数据

先构造模拟的调查数据,包含选项名称和对应频率:

library(ggplot2)

# 模拟调查数据
survey_data <- data.frame(
  answer = c("非常满意", "满意", "一般", "不满意", "非常不满意"),
  frequency = c(25, 35, 20, 12, 8) # 对应各选项的占比/频率
)

2. 绘制基础气泡图

核心用geom_point(),通过size参数绑定频率数值,为让气泡面积和频率成正比,可对频率做开方处理:

ggplot(survey_data, aes(x = answer, y = 1, size = sqrt(frequency))) +
  geom_point(color = "#2d4059", alpha = 0.8) + # 设置气泡颜色与透明度
  scale_size_continuous(range = c(6, 22), # 控制气泡大小范围
                       name = "占比(%)") + # 图例名称
  theme_minimal() +
  theme(
    axis.title.y = element_blank(), # 隐藏y轴标题
    axis.text.y = element_blank(), # 隐藏y轴刻度
    axis.ticks.y = element_blank(), # 隐藏y轴刻度线
    panel.grid = element_blank() # 隐藏网格线
  ) +
  labs(
    x = "调查选项",
    title = "调查答案频率气泡图"
  )

3. 优化细节(可选)

若要在气泡上标注具体频率数值,添加geom_text()即可:

ggplot(survey_data, aes(x = answer, y = 1, size = sqrt(frequency))) +
  geom_point(color = "#2d4059", alpha = 0.8) +
  geom_text(aes(label = paste0(frequency, "%")), size = 4, color = "white") + # 标注百分比
  scale_size_continuous(range = c(6, 22), name = "占比(%)") +
  theme_minimal() +
  theme(
    axis.title.y = element_blank(),
    axis.text.y = element_blank(),
    axis.ticks.y = element_blank(),
    panel.grid = element_blank()
  ) +
  labs(
    x = "调查选项",
    title = "带数值标注的调查频率气泡图"
  )

补充说明

  • 用sqrt(frequency)绑定size,是为了让气泡面积严格和频率数值成正比(默认size对应半径,直接用频率会导致面积差距过大)
  • 可根据需求调整配色、字体、主题样式,匹配皮尤研究中心的沉稳风格

内容的提问来源于stack exchange,提问作者marina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 20:05:17