如何绘制堆叠多y变量气泡图展示施工项目车辆周度进场数据
问题1:图表标准名称
这类图表的标准名称是分类气泡矩阵图,也常被叫做二维分类气泡图,你之前查询的“离散堆叠气泡图”是不通用的非标准俗称。它本质是散点图的变体:将两个分类维度(x轴的周数、y轴的车辆类型)作为网格坐标,第三个数值维度(车辆进场数量)映射为气泡大小,部分可视化工具也会将它归类到热力散点图的子类中。
问题2:实现方案&替代思路
现有需求的实现方法
你描述的需求可以用几乎所有主流可视化工具实现:
- 办公软件(Excel/WPS表格):先整理三列结构化数据:周数、车辆类型(提前给每类车型赋值为数值,比如小汽车=1、厢式货车=2、卡车=3,后续将y轴刻度替换为车型名称即可)、进场数量。插入图表时选择「气泡图」,分别将周数、车型赋值列、数量列对应到x轴、y轴、气泡大小维度,调整气泡透明度、坐标轴格式即可完成。
- 代码实现(Python):用Matplotlib的scatter方法即可快速实现,示例代码如下:
import matplotlib.pyplot as plt import pandas as pd # 示例数据结构,替换为你自己的数据集即可 df = pd.DataFrame({ "week": [1,1,2,3,3,3], "vehicle_type": ["小汽车", "厢式货车", "卡车", "小汽车", "厢式货车", "卡车"], "count": [5,2,1,7,3,4] }) # 车型映射y轴数值 type_map = {"小汽车":1, "厢式货车":2, "卡车":3} df["y_val"] = df["vehicle_type"].map(type_map) # 绘制图表 plt.figure(figsize=(12, 4)) plt.scatter(x=df["week"], y=df["y_val"], s=df["count"]*15, alpha=0.6, color="#2196F3") plt.yticks([1,2,3], ["小汽车", "厢式货车", "卡车"]) plt.xlabel("一年中的周数") plt.ylabel("车辆类型") plt.grid(alpha=0.3) plt.show()
如果需要做交互式看板,可以用Plotly实现,hover时可以直接显示具体的进场数量,查阅更方便。
- BI工具(Tableau/PowerBI):零代码即可实现,直接将周数字段拖到列功能区,车辆类型字段拖到行功能区,进场数量字段拖到「大小」标记卡,自动生成对应图表,调整气泡的大小范围、颜色即可。
可选的优化思路
如果你的数据覆盖多年,还有两个更适配的方案可以选:
- 保留气泡图形式,新增颜色维度映射年份,同周同车型的不同年份气泡可以做小幅度的位置偏移避免重叠,或者直接按年分页展示。
- 如果不需要精确对比数量级,只需要快速识别空周和繁忙程度,可以用分类热力图替代,将进场数量映射为颜色深浅,识别趋势的效率更高。
内容的提问来源于stack exchange,提问作者BigWalt
相关产品推荐
相关产品推荐

