脚本专家 发表于 4 天前

Python数据可视化:折线图柱形图散点图选择与实现

在Python Excel数据可视化中,很多人会直接记忆plt.plot()、plt.bar()等函数,但真正做报表时却卡在“该用哪种图表”上。图表类型选错,即使代码无报错,读者也难以抓住重点。本文从图表选择原则出发,结合Matplotlib代码,梳理折线图、柱形图、条形图和散点图的适用场景与实现方式。

## 一、图表选择先于绘图代码

图表的核心是让数据表达一个明确问题。先判断要回答什么:
- 趋势变化 → 折线图
- 类别对比 → 柱形图(竖)/ 条形图(横)
- 变量关系 → 散点图
- 占比 → 饼图(限少量类别)
- 多指标 + 趋势 → 组合图或双轴图

不要先选图再硬塞数据。图表选择本质是数据表达设计,不是函数调用。

## 二、从Excel数据到图表的完整流程

Python可视化并非孤立画图,而是一条数据处理流水线:


import pandas as pd
import matplotlib.pyplot as plt

# 1. 读取Excel数据
df = pd.read_excel("data.xlsx")

# 2. 选择分析字段
x = df["月份"]
y = df["销售额"]

# 3. 创建图表
plt.figure(figsize=(8, 5))
plt.plot(x, y, marker="o")

# 4. 设置标题和坐标轴
plt.title("月度销售额趋势")
plt.xlabel("月份")
plt.ylabel("销售额")

# 5. 显示
plt.tight_layout()
plt.show()


最容易忽略的是数据清洗步骤。图表出错多半是数据结构、字段类型、空值或重复值未处理,而非Matplotlib本身问题。

## 三、折线图:展示趋势变化

折线图最适合“随时间变化”的数据(销售额、访问量、工单响应时长等)。核心价值是让读者看到上升、下降、震荡或拐点。


months = ["1月", "2月", "3月", "4月", "5月", "6月"]
values =
plt.figure(figsize=(8, 5))
plt.plot(months, values, marker="o", linewidth=2)
plt.title("月度数据趋势")
plt.xlabel("月份")
plt.ylabel("数值")
plt.grid(axis="y", linestyle="--", alpha=0.4)
plt.tight_layout()
plt.show()


实战建议:配合数据标签、网格线、清晰时间轴;时间点多时旋转x轴标签避免重叠。

## 四、柱形图与条形图:类别对比

柱形图(竖向)适合类别数量不多、名称较短的情况;条形图(横向)适合类别名称长、需做排行榜的场景。

柱形图示例:

categories = ["A类", "B类", "C类", "D类"]
values =
plt.figure(figsize=(7, 5))
plt.bar(categories, values)
plt.title("类别数据对比")
plt.xlabel("类别")
plt.ylabel("数值")
plt.tight_layout()
plt.show()


条形图示例(适合长文本类别):

categories = ["企业微信在线文档", "Outlook", "Teams", "Edge浏览器"]
values =
plt.figure(figsize=(8, 5))
plt.barh(categories, values)
plt.title("软件故障次数排行")
plt.xlabel("次数")
plt.tight_layout()
plt.show()


注意:类别超过10个时,应先排序取Top N,再用条形图。

## 五、散点图:发现变量关系与异常点

散点图回答“两个变量之间是否有规律”。观察点的分布方向、密集区域、离群点以及趋势线。


x =
y =
plt.figure(figsize=(7, 5))
plt.scatter(x, y)
plt.title("变量关系散点图")
plt.xlabel("变量X")
plt.ylabel("变量Y")
plt.grid(True, linestyle="--", alpha=0.4)
plt.tight_layout()
plt.show()


实战建议:配合相关系数、趋势线、异常点标注;单画点不解释分布规律则价值有限。

## 六、其他图表的使用边界

- 饼图:仅限5~6个类别及以内展示占比,超过则改用条形图或堆积图。
- 面积图:强调“量的堆叠感”,系列太多会遮挡。
- 雷达图:适合多指标能力画像,不适合精确读数。
- 组合图/双轴图:适合数量+趋势同时展示(如柱形图+折线图),但必须注意双轴量纲差异,避免误读。

## 七、选择原则:先问问题再选图

推荐的判断顺序:
- 看趋势 → 折线图
- 看类别对比 → 柱形图 / 条形图
- 看排行 → 条形图
- 看占比 → 饼图 / 堆积图
- 看关系 → 散点图
- 看多指标 → 雷达图
- 看数量+趋势 → 组合图
- 看不同量纲 → 双轴图

最差做法是为了“高级”强行使用复杂图表,让读者更难理解。

## 八、常见踩坑:图表表达错误

1. 图表类型选错:例如把时间趋势做成饼图,把相关性做成柱形图。
2. 坐标轴无说明:缺横轴、纵轴、单位,图再漂亮也缺少解释力。
3. 类别过多:应排序、筛选Top N或合并“其他”。
4. 只画图不给结论:必须说明从图中能看出什么判断。

## 九、总结

先明确表达目标,再选择图表类型,最后才写绘图代码。记住几个常用判断:
- 看趋势,用折线图
- 看对比,用柱形图或条形图
- 看关系,用散点图
- 看占比,用饼图或堆积图
- 看复杂报表,再考虑组合图和双轴图

不要为了炫技而做图。真正好的图表让读者不用猜、不绕弯,快速看出数据背后的重点。

热心网友2 发表于 4 天前

Re: Python数据可视化:折线图柱形图散点图选择与实现

感谢楼主分享这么清晰的图表选择指南,非常实用。我最认同“先问问题再选图”这个思路——以前确实经常拿到数据先想plt.plot还是plt.bar,结果做出来图表自己都觉得别扭。你梳理的判断顺序和常见踩坑部分对我帮助很大,尤其是类别过多时先排序取Top N那条,工作中经常踩。另外水印提示“只画图不给结论”也很关键,图表本身就是为决策服务的。准备把这篇收藏起来当参考。

热心网友2 发表于 4 天前

Re: Python数据可视化:折线图柱形图散点图选择与实现

很实用的内容,感谢分享。楼主把“先明确问题再选图表”这个思路讲得很清楚,比单纯罗列函数有用多了。特别是“先问问题再选图”的判断顺序,对新手很有帮助。数据清洗部分也是容易被忽略的关键,很多人报错确实不是matplotlib的问题。感谢整理。

热心网友2 发表于 4 天前

Re: Python数据可视化:折线图柱形图散点图选择与实现

楼主的整理非常清晰,尤其是“先问问题再选图”的思路,比单纯记函数参数实用多了。表格里的判断顺序也很直观,适合新手对照。有一点想请教:散点图里加入趋势线,比如用`numpy.polyfit`拟合一条直线,然后用`plt.plot`画出来,楼主一般在什么场景下会加这条线?我有时加了反而觉得多余,比如数据点分布像云团没有明显线性关系时。
页: [1]
查看完整版本: Python数据可视化:折线图柱形图散点图选择与实现