如何给ggplot2热图中数据集缺失的观测值对应的空单元格添加边框
解决方案
核心思路
你的原始数据缺少店铺(Shop)和日期(Day)的全量组合,所以首先需要补全两类维度的所有可能组合,把缺失的销售值标记为NA,绘图时统一为所有瓦片(包括NA对应的空白瓦片)设置边框即可。
具体实现步骤
- 第一步:加载所需工具包,构造示例数据
library(ggplot2) library(tidyr) library(dplyr) # 对应你的原始数据 df <- data.frame( Shop = c("01", "01", "01", "02", "03"), Day = c("01", "02", "05", "01", "03"), Sales = c(4,2,3,1,2) )
- 第二步:补全店铺和日期的全量组合,缺失的销售值自动填充为NA
df_full <- df %>% complete(Shop = unique(df$Shop), Day = unique(df$Day))
- 第三步:绘制热图,统一设置瓦片边框
如果需要缺失值的瓦片和背景视觉上一致,只露出边框,可以通过na.value参数把缺失值的填充色设为和背景相同的颜色:
ggplot(df_full, aes(x = Day, y = Shop)) + geom_tile(aes(fill = Sales), color = "black") + # color参数控制所有瓦片的边框颜色 scale_fill_gradient(low = "#f7fbff", high = "#08306b", na.value = "white") + theme_bw()
如果需要缺失值的边框和有观测值的边框样式不同,可以把color映射为是否为缺失值的判断变量,再通过scale_color_manual自定义颜色即可。
内容的提问来源于stack exchange,提问作者Firas Zguir
相关产品推荐
相关产品推荐

