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

文末赠免费精品编程资料~~

在数据科学的广阔天地里,数据可视化是不可或缺的一环,它让复杂的数据变得易于理解。对于Python初学者而言,掌握MatplotlibSeaborn这两个强大的库,无疑能让你的分析报告更加生动有趣。本文专为渴望提升数据可视化技能的你设计,通过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 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后这里免费分享给大家一份Python全套学习资料,希望能给想学习 Python 的小伙伴们一点帮助!

编程资料、学习路线图、源代码、软件安装包等!在文末免费领取
① Python所有方向的学习路线图,清楚各个方向要学什么东西
② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例,学习不再是只会理论
④ 华为出品独家Python漫画教程,手机也能学习
⑤ 历年互联网企业Python面试真题,复习时非常方便
在这里插入图片描述
👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。
在这里插入图片描述

  • 14
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值