做数据分析、运营复盘、数据汇报时,大家总会遇到一个难题:单纯看表格数据枯燥难懂,看不出趋势和差异。
比如日常的用户投诉、订单数据、流量数据,一堆数字罗列在表格里,很难快速发现数据波动规律、峰值低谷。
其实用 Python Matplotlib 就能轻松解决这个问题!今天给大家分享一套通用万能实战代码,一次性绘制折线图+柱状图双图组合,既能看数据变化趋势,又能对比每日数据差异,零基础直接复制即用,适配所有时序分类数据可视化场景。
全程无冗余代码、自带中文适配、数值标注、网格美化,看完直接收藏复用!
一、为什么要做「双图组合可视化」?
很多新手做可视化,只会单独画折线图或柱状图,其实两者搭配才是数据分析的最优解,两张图各司其职、互补短板:
1.折线图:主打趋势分析,清晰展示数据随时间的连续变化、波动速度,快速捕捉上涨、下跌、平稳走势
2.柱状图:主打数值对比,直观呈现每一天、每一类数据的绝对差值,高低差异一目了然
以一周投诉量数据为例,双图搭配可以快速得出核心结论:周一至周五投诉量持续上涨,周五达到峰值,周末小幅回落,不管是自我复盘还是汇报展示,都极具说服力。
二、完整可运行实战代码(直接复制即用)
这份代码经过优化,解决了Matplotlib经典的中文乱码、负号不显示问题,自带数值标注、网格美化、自适应布局,零基础开箱即用。
python import matplotlib.pyplot as plt import numpy as np # 设置中文字体(避免中文方框乱码+正常显示负号) plt.rcParams['font.sans-serif'] = ['SimHei']# 黑体显示中文 plt.rcParams['axes.unicode_minus'] = False# 解决负号显示异常 # 核心数据源:可替换为你的真实数据 days = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] complaints = [12, 15, 18, 22, 30, 25, 20]# 每日投诉量 # 创建1行2列子图,统一画布大小 fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5)) # 1. 左侧:投诉量趋势折线图 ax1.plot(days, complaints, marker='o', linestyle='-', color='b', linewidth=2, markersize=6) ax1.set_title('一周投诉量趋势(折线图)') ax1.set_xlabel('星期') ax1.set_ylabel('投诉数量') ax1.grid(True, linestyle='--', alpha=0.6)# 添加浅色网格,提升可读性 # 为每个数据点标注具体数值 for i, v in enumerate(complaints): ax1.text(i, v + 0.5, str(v), ha='center', va='bottom', fontsize=10) # 2. 右侧:投诉量对比柱状图 ax2.bar(days, complaints, color='skyblue', edgecolor='navy', alpha=0.7) ax2.set_title('一周投诉量趋势(柱状图)') ax2.set_xlabel('星期') ax2.set_ylabel('投诉数量') ax2.grid(axis='y', linestyle='--', alpha=0.6) # 柱顶标注具体数值 for i, v in enumerate(complaints): ax2.text(i, v + 0.5, str(v), ha='center', va='bottom', fontsize=10) # 自动适配布局,避免文字重叠 plt.tight_layout() # 展示图像 plt.show() # 可选:保存高清图片用于汇报/推文(取消注释即可) # plt.savefig('complaint_trend.png', dpi=150) |
三、可视化效果直观解读
代码运行后,会直接生成左右双图联动视图,效果清晰直观:
1. 左侧折线图
完整还原数据连续性变化,能清晰看到:周一到周五投诉量稳步攀升,周五30单为一周最高值,周六、周日投诉量小幅下降,精准捕捉数据波动节奏。
2. 右侧柱状图
聚焦单日数据对比,一眼就能看出周五投诉量远超其他日期,周一投诉量最低,各类数据的绝对差距清晰可见,适合用于数据对比分析。
四、核心知识点拆解(新手必学)
不只是套用代码,弄懂这些核心知识点,后续所有时序数据都能轻松可视化!
1. 中文乱码解决方案
Matplotlib默认不支持中文,两行代码彻底解决,通用所有绘图场景:
plt.rcParams['font.sans-serif'] = ['SimHei']:设置黑体字体,正常显示中文
plt.rcParams['axes.unicode_minus'] = False:修复负号显示异常问题
2. 子图布局技巧
plt.subplots(1, 2, figsize=(12, 5)):创建1行2列画布,实现一屏展示两张图表,统一尺寸、排版规整,适合对比类可视化场景。
3. 两大核心绘图函数
plot():绘制折线图,适配时序数据、连续数据,核心用途是分析变化趋势
bar():绘制柱状图,适配分类数据、离散数据,核心用途是数据大小对比
4. 数值标注功能
通过 ax.text() 函数,在每个数据点、柱顶标注具体数值,告别看图猜数,图表信息更完整,适配正式汇报场景。
5. 网格美化
添加浅色虚线网格,降低读图难度,同时不遮挡数据,兼顾美观与实用性。
五、灵活修改适配场景(万能复用)
这套代码并非只能用于投诉量分析,所有时间维度的分类数据都能直接套用,只需简单修改即可:
1.替换数据:直接修改 days 分类列表、complaints 数值列表,可替换为日订单量、日流量、月销售额、用户新增数据等
2.单图展示:只需折线图,删除柱状图对应代码;只需柱状图,删除折线图代码即可
3.保存图片:取消 plt.savefig() 注释,可生成150dpi高清图片,用于报表、PPT、推文配图
4.样式自定义:可自由修改线条颜色、粗细、柱子配色、字体大小,适配自己的视觉需求
六、写在最后
可视化是数据分析的核心能力,相比于复杂的数据分析算法,简单直观的图表呈现,更能快速落地工作、提升汇报质感。
这套「折线+柱状」双图组合代码,兼顾趋势分析和数据对比,适配90%的日常数据分析场景,零基础也能快速上手。
建议直接收藏,后续做数据复盘、工作总结、学习练习,随时拿来复用!
需要更多Python可视化实战模板(饼图、热力图、多子图组合、动态图表),可以持续关注后续更新~