如何在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
相关产品推荐
相关产品推荐

