如何为dt数据表中各delivYear的nrOrders按month绘制分布密度图?
解决方案:针对各配送年份订单数的分布可视化
你的数据里nrOrders是离散计数变量,month是有序分类变量,虽无传统连续变量,但可通过两种思路实现你需要的分布/密度可视化:
一、按配送年份,展示订单数的整体密度分布(不区分月份)
若想观察每个delivYear下nrOrders的整体分布形态,可将离散计数变量近似为连续变量,用核密度估计绘制密度图,或结合直方图展示:
代码示例(ggplot2)
library(ggplot2) library(data.table) # 确保数据为data.table格式 setDT(dt) # 纯密度图 ggplot(dt, aes(x = nrOrders, color = delivYear, fill = delivYear)) + geom_density(alpha = 0.3) + labs(title = "各配送年份订单数的密度分布", x = "订单数量", y = "密度", color = "配送年份", fill = "配送年份") + theme_minimal() # 直方图+密度曲线组合 ggplot(dt, aes(x = nrOrders, color = delivYear, fill = delivYear)) + geom_histogram(aes(y = after_stat(density)), bins = 15, alpha = 0.3, position = "identity") + geom_density(alpha = 0.2) + labs(title = "各配送年份订单数的分布(直方图+密度)", x = "订单数量", y = "密度", color = "配送年份", fill = "配送年份") + theme_minimal()
二、按配送年份+月份,展示订单数的分布(贴合核心需求)
你的核心需求是分析nrOrders在month上的分布,用箱线图或小提琴图更直观,能看到每个月份下订单数的中位数、四分位、极值等分布特征,同时按配送年份区分:
代码示例:按年份分面,展示各月份订单数分布
# 确保月份保持自然顺序 dt$month <- factor(dt$month, levels = c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"), ordered = TRUE) # 箱线图 ggplot(dt, aes(x = month, y = nrOrders)) + geom_boxplot(fill = "lightblue", alpha = 0.7) + facet_wrap(~delivYear, ncol = 1) + labs(title = "各配送年份每月订单数分布", x = "月份", y = "订单数量") + theme_minimal() + theme(axis.text.x = element_text(angle = 45, hjust = 1)) # 小提琴图+箱线图组合(更清晰展示分布形态) ggplot(dt, aes(x = month, y = nrOrders)) + geom_violin(fill = "lightgreen", alpha = 0.5) + geom_boxplot(width = 0.2, color = "darkred") + facet_wrap(~delivYear, ncol = 1) + labs(title = "各配送年份每月订单数分布(小提琴+箱线)", x = "月份", y = "订单数量") + theme_minimal() + theme(axis.text.x = element_text(angle = 45, hjust = 1))
代码示例:按月份分组,对比不同年份的订单数分布
ggplot(dt, aes(x = month, y = nrOrders, color = delivYear, fill = delivYear)) + geom_boxplot(alpha = 0.3, position = position_dodge(width = 0.8)) + labs(title = "各月份不同配送年份的订单数分布", x = "月份", y = "订单数量", color = "配送年份", fill = "配送年份") + theme_minimal() + theme(axis.text.x = element_text(angle = 45, hjust = 1))
三、补充说明
- 离散变量的密度图通过核密度估计将离散数据平滑为连续曲线,可帮助观察整体分布的集中趋势与离散程度;
- 若更关注月份维度的分布,箱线图/小提琴图比单纯密度图更贴合需求,因为它们直接关联了
month变量; - 所有代码基于
ggplot2包,未安装可执行:install.packages("ggplot2")
内容的提问来源于stack exchange,提问作者Miko
相关产品推荐
相关产品推荐

