编程学习网 > 编程语言 > Python > Python数据可视化:15个Matplotlib与Seaborn的高级图表绘制技巧
2024
07-19

Python数据可视化:15个Matplotlib与Seaborn的高级图表绘制技巧


在数据科学的广阔天地里,数据可视化是不可或缺的一环,它让复杂的数据变得易于理解。对于Python初学者而言,掌握Matplotlib和Seaborn这两个强大的库,无疑能让你的分析报告更加生动有趣。本文专为渴望提升数据可视化技能的你设计,通过15个实用技巧,带你从基础走向高级,探索数据背后的精彩故事。


1. 基础条形图 - 简单入手
Matplotlib示例:

import matplotlib.pyplot as plt
import numpy as np

data = np.array([10, 20, 30, 40])
plt.bar(range(len(data)), data)
plt.xlabel('类别')
plt.ylabel('值')
plt.title('基础条形图')
plt.show()
解读:通过plt.bar函数,我们创建了一个简单的条形图,展示了不同类别的值。
2. Seaborn的风格变换
Seaborn默认提供了更美观的样式,只需一行代码:

sns.set(style="whitegrid")
这会改变图表的背景,让数据更突出。

3. 高级散点图 - 热力图
Seaborn示例:

import seaborn as sns
iris = sns.load_dataset("iris")
sns.pairplot(iris, hue='species')
解读:pairplot是Seaborn的强大功能,用于探索多变量之间的关系,通过颜色区分不同类别,非常直观。
4. 线图中的趋势分析
dates = pd.date_range(start="2022-01-01", periods=12)
values = np.random.randn(12).cumsum()
plt.plot(dates, values)
plt.xticks(rotation=45)
plt.title('时间序列趋势')
plt.xlabel('日期')
plt.ylabel('值')
plt.gcf().autofmt_xdate()  # 自动格式化x轴日期
技巧:使用autofmt_xdate自动优化日期标签显示。
5. 箱线图展示数据分布
Matplotlib示例:

data = np.random.normal(size=100).reshape(10, 10)
plt.boxplot(data, vert=False)  # 水平箱线图
plt.xlabel('数据分组')
plt.title('箱线图')
注意:vert=False用于创建水平箱线图,便于比较不同组。
6. Seaborn的直方图与核密度估计(KDE)结合
sns.histplot(data=np.random.randn(1000), kde=True, color="skyblue", linewidth=1.5)


解析:histplot结合了直方图和KDE曲线,帮助理解数据的分布特征。
7. 堆叠条形图 - 比较组内差异
categories = ['A', 'B', 'C']
values1 = [20, 35, 30]
values2 = [25, 32, 18]

plt.bar(categories, values1, label='Group 1')
plt.bar(categories, values2, bottom=values1, label='Group 2')
plt.legend()
plt.title('堆叠条形图')
要点:通过bottom参数,第二个条形图在第一个之上堆叠。
8. 雷达图 - 多维度评估
labels=np.array(['指标1', '指标2', '指标3', '指标4', '指标5'])
stats=np.random.rand(5)
angles=np.linspace(0, 2*np.pi, len(labels), endpoint=False).tolist()

fig, ax = plt.subplots(figsize=(6, 6), subplot_kw=dict(polar=True))
ax.fill(angles, stats, color='red', alpha=0.25)
ax.set_yticklabels([])
ax.set_xticks(angles)
ax.set_xticklabels(labels)
plt.title('雷达图')
创意:适用于多属性比较,如产品特性评估。
9. 小提琴图 - 细节展现
Seaborn示例:

sns.violinplot(x="species", y="sepal_length", data=iris)
优势:小提琴图能同时展示数据的分布密度和范围,非常适合展示不同类别间的差异。
10. 热图 - 相关性矩阵
corr = iris.corr()
sns.heatmap(corr, annot=True, cmap='coolwarm')
洞察:热图是展示变量间相关性的利器,annot=True添加注释,增强可读性。
11. 3D图表 - 空间探索
引入mpl_toolkits.mplot3d模块后:

from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = np.random.standard_normal(100)
y = np.random.standard_normal(100)
z = x + y
ax.scatter(x, y, z)
ax.set_xlabel('X axis')
ax.set_ylabel('Y axis')
ax.set_zlabel('Z axis')
plt.title('3D Scatter Plot')
plt.show()
扩展:3D图让你的数据探索进入新的维度。
12. 时间序列的折线图
dates = pd.date_range('20220101', periods=100)
data = np.cumsum(np.random.randn(100))
df = pd.DataFrame(data, dates, columns=['Value'])
df.plot(kind='line')
应用:处理时间序列数据时,折线图是展示趋势的首选。
13. 双轴图表 - 比较不同尺度数据
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot(dates, values, 'g-')
ax2.plot(dates, values * 100, 'b-')
ax1.set_xlabel('日期')
ax1.set_ylabel('Value 1', color='g')
ax2.set_ylabel('Value 2', color='b')
技巧:通过twinx()创建第二轴,适合展示两个不同尺度的数据。
14. 地理地图 - Folium集成
虽然Folium不是Matplotlib或Seaborn的一部分,但它强大地支持地图可视化。

import folium
m = folium.Map(location=[45.5236, -122.6750], zoom_start=13)
folium.Marker([45.5236, -122.6750]).add_to(m)
扩展:通过Folium,Python也能绘制互动地图。
15. 交互式图表 - 使用Plotly
虽然本文主要聚焦于Matplotlib和Seaborn,但值得提及的是,Plotly可以创建交互式图表,这对于深入分析特别有用。

import plotly.express as px
df = px.data.iris()
fig = px.scatter(df, x='sepal_width', y='sepal_length', color='species', size='petal_length')
fig.show()

未来:交互式图表是数据分析的趋势,Plotly是实现这一目标的强大工具。

以上就是Python数据可视化:15个Matplotlib与Seaborn的高级图表绘制技巧的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取