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

如何在ggplot2中调整stat_summary_2d的图例breaks参数?

如何调整stat_summary_2d图例的breaks?

问题背景

你尝试两种方式调整stat_summary_2d的图例breaks均未达预期:

  • 在scale_fill_viridis_c()中设置breaks,图例刻度不符合预期
  • 在stat_summary_2d()中设置breaks,结果仍不理想

希望不借助额外函数实现图例breaks的调整。

数据集代码

templ = data.frame(count = c(200,225,610,233,250,210,290,255,279,250),
                   temperature = c(12.2,11.6,12,8.5,4,8.2,9.2,10.6,10.8,10.9),
                   relative_humidity_percent = c(74,78,72,65,77,84,83,74,73,75))

问题原因

stat_summary_2d()是对x/y轴分箱后计算z值统计量(默认均值),生成的填充属于离散分箱类型,而非连续型。你之前用的scale_fill_viridis_c()是连续型颜色刻度,与输出类型不匹配导致breaks失效;而stat_summary_2d()的breaks参数仅控制x/y轴的分箱区间,和z值图例breaks无关。

解决方案

改用分箱型颜色刻度scale_fill_viridis_b()(后缀b代表binned),在其中设置breaks参数即可正确控制图例刻度:

heatf_65 = templ %>% 
  ggplot(aes(temperature, relative_humidity_percent, z = count*1.05)) +
  stat_summary_2d() +
  # 分箱型颜色刻度搭配自定义breaks
  scale_fill_viridis_b(breaks = seq(180, 650, 100), 
                       limits = c(180, 650)) + # 可选:确保刻度覆盖目标数值范围
  xlab('Daily Mean Temperature (°C)') +
  ylab('Daily Mean Relative Humidity Percent (%)') +
  ggtitle('Admission rate (per 100000 population)') +
  theme_classic() +
  ggeasy::easy_center_title()

补充说明

  • 若需调整z值的分箱区间(即每个颜色对应的数值范围),可同时设置breaks和limits,确保所有目标刻度被包含
  • stat_summary_2d()的binwidth参数用于控制x/y轴的分箱大小,与图例breaks是独立设置项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 14:53:27