你是否还在用 Excel 制图?学会 Python 可视化后,不仅效率更高,效果也更专业,轻松打造交互式数据图表!
数据可视化的本质,是让数据说话。在实际工作和项目中,图表被广泛应用于:
Excel/PPT | Python |
---|---|
操作繁琐,修改费时 | 一次脚本,复用无限 |
图表样式受限 | 样式高度自定义 |
不适合大数据 | 可处理百万级数据 |
不可自动化 | 可批量自动生成 |
可视化库 | 适用场景 |
---|---|
Matplotlib | 底层、最常用、可定制 |
Seaborn | 美观、统计图表 |
Plotly | 交互式图表 |
Pyecharts | 中文友好、适合仪表盘 |
Altair | 声明式图表 |
Bokeh | 大数据交互可视化 |
本篇文章重点讲解:Matplotlib + Seaborn,通过基础到实战构建出一个完整的数据分析图表仪表盘。
安装依赖:
bash复制编辑pip install matplotlib seaborn pandas numpy
引入模块:
python复制编辑import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
设置中文字体(避免乱码):
python复制编辑plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文
plt.rcParams['axes.unicode_minus'] = False # 负号正常显示
python复制编辑x = ['1月', '2月', '3月', '4月']
y = [120, 150, 170, 210]
plt.plot(x, y, marker='o')
plt.title("销售趋势")
plt.xlabel("月份")
plt.ylabel("销售额")
plt.grid(True)
plt.show()
python复制编辑products = ['A', 'B', 'C']
sales = [300, 500, 400]
plt.bar(products, sales, color='skyblue')
plt.title("各产品销售额")
plt.show()
python复制编辑labels = ['线上', '线下', '第三方']
sizes = [50, 30, 20]
plt.pie(sizes, labels=labels, autopct='%.1f%%')
plt.title("销售渠道占比")
plt.show()
我们使用 Seaborn 提供的鸢尾花(Iris)数据集做演示:
python复制编辑df = sns.load_dataset("iris")
python复制编辑sns.boxplot(x="species", y="sepal_length", data=df)
plt.title("不同种类花的萼片长度分布")
plt.show()
python复制编辑sns.violinplot(x="species", y="sepal_width", data=df)
plt.title("花萼宽度密度分布")
plt.show()
python复制编辑corr = df.corr()
sns.heatmap(corr, annot=True, cmap='coolwarm')
plt.title("变量相关性热力图")
plt.show()
我们将多个图表组合到一张图中,形成“数据仪表盘”。
python复制编辑fig, axs = plt.subplots(2, 2, figsize=(12, 8))
# 折线图
axs[0, 0].plot([1, 2, 3, 4], [100, 150, 180, 200])
axs[0, 0].set_title("销售趋势")
# 柱状图
axs[0, 1].bar(['A', 'B', 'C'], [300, 500, 450])
axs[0, 1].set_title("产品销售对比")
# 饼图
axs[1, 0].pie([60, 25, 15], labels=['线上', '线下', '第三方'], autopct='%1.1f%%')
axs[1, 0].set_title("渠道占比")
# 热力图
sns.heatmap(df.corr(), ax=axs[1, 1], annot=True, cmap='YlGnBu')
axs[1, 1].set_title("变量相关性")
plt.tight_layout()
plt.show()
📌 效果图如下(可视化仪表盘示意):
python复制编辑data = pd.read_csv("employee_data.csv") # 包含满意度、工龄、部门、薪资
python复制编辑sns.histplot(data['satisfaction_level'], bins=20)
plt.title("员工满意度分布")
plt.show()
sns.boxplot(x='department', y='satisfaction_level', data=data)
plt.xticks(rotation=45)
plt.title("各部门满意度比较")
plt.show()
sns.scatterplot(x='satisfaction_level', y='last_evaluation', hue='left', data=data)
plt.title("满意度 vs 最后一次评估 vs 离职")
plt.show()
python复制编辑sns.set_style("whitegrid") # 白底网格风格
sns.set_palette("Set2") # 配色方案
还可以使用 style sheets
快速应用主题:
python复制编辑plt.style.use("ggplot") # 还有 seaborn-darkgrid、bmh、dark_background 等
python复制编辑plt.savefig("sales_chart.png", dpi=300, bbox_inches='tight')
⚠️ 注意:
plt.show()
之后再调用savefig
会导致空白图,需先保存再展示。
项目 | 描述 |
---|---|
股票趋势分析 | 读取历史数据,绘制价格走势图 |
销售数据仪表盘 | 月度销售、客户构成、退货比 |
网站流量分析 | 不同入口来源趋势图、热力图 |
机器学习模型评估 | ROC 曲线、混淆矩阵图 |
新闻词频分析 | 词云 + 柱状词频图 |
Plotly
:交互图表(拖拽、缩放、点击)
Streamlit
:快速构建交互式仪表盘网页
Altair
:声明式语法,可组合图形分析
Pyecharts
:更适合国内环境(支持中文、地图)
Python 可视化并不只是“画图”,它是连接数据 → 认知 → 决策的桥梁。掌握 Matplotlib
和 Seaborn
,你就可以用数据讲故事,让你的图比 Excel 更炫、更有说服力。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。