返回
深度透析Matplotlib:50张最具价值图表绘制大全(附赠完整Python源代码)
见解分享
2024-01-06 00:17:10
数据可视化的利器:Matplotlib 的 50 个图表绘制方法
前言
在当今数据驱动的世界中,数据可视化已成为决策制定和理解复杂数据不可或缺的一部分。而对于 Python 而言,Matplotlib 则堪称数据可视化的王者。本文将深入探讨 Matplotlib 的 50 种强大图表绘制方法,并提供清晰易懂的 Python 源代码。无论是数据科学家、分析师还是开发人员,都能从这篇文章中受益匪浅。
折线图:捕捉趋势与变化
- 简单折线图: 绘制折线图是展现数据随时间变化趋势的最简单方法。
plt.plot([1, 2, 3, 4], [5, 6, 7, 8])
- 多重折线图: 当您需要比较多组数据时,多重折线图可以轻松实现。
plt.plot([1, 2, 3], [5, 6, 7], label='Dataset 1') plt.plot([1, 2, 3], [8, 9, 10], label='Dataset 2')
- 填充折线图: 填充折线图的区域可以突出显示数据变化的幅度。
plt.fill_between([1, 2, 3], [5, 6, 7], [8, 9, 10], color='blue')
- 对数折线图: 当数据跨越多个数量级时,对数折线图可以有效压缩范围。
plt.semilogy([1, 10, 100, 1000])
- 极坐标折线图: 极坐标折线图适合表现角度和幅度的数据。
plt.polar([0, np.pi/2, np.pi, 3*np.pi/2], [1, 2, 3, 4])
条形图:比较与分布
- 简单条形图: 条形图直观展示不同类别的数值大小。
plt.bar([1, 2, 3], [5, 6, 7])
- 分组条形图: 分组条形图在多个组别中比较不同类别的数据。
plt.bar([1, 2, 3], [5, 6, 7], label='Group A') plt.bar([1, 2, 3], [8, 9, 10], bottom=[5, 6, 7], label='Group B')
- 堆叠条形图: 堆叠条形图展示不同类别数据累积的总量。
plt.bar([1, 2, 3], [5, 6, 7], bottom=[0, 0, 0], label='Category A') plt.bar([1, 2, 3], [8, 9, 10], bottom=[5, 6, 7], label='Category B')
- 水平条形图: 水平条形图将类别放在垂直轴上。
plt.barh([1, 2, 3], [5, 6, 7])
- 百分比条形图: 百分比条形图显示不同类别数据占总体的百分比。
plt.bar([1, 2, 3], [0.5, 0.25, 0.25])
饼图:展示比例与构成
- 简单饼图: 饼图将数据分成不同的扇形区域,表示各部分占整体的比例。
plt.pie([5, 6, 7])
- 爆炸饼图: 爆炸饼图突出显示特定扇形区域。
plt.pie([5, 6, 7], explode=[0.1, 0, 0])
- 环形图: 环形图在饼图内留有一个空心圆。
plt.pie([5, 6, 7], radius=1, width=0.5)
- 百分比饼图: 百分比饼图显示每个扇形区域占整体的百分比。
plt.pie([5, 6, 7], labels=['A', 'B', 'C'], autopct='%1.1f%%')
- 三维饼图: 三维饼图增加深度感,提升视觉效果。
from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.pie([5, 6, 7])
散点图:揭示关系与分布
- 简单散点图: 散点图显示两个变量之间的关系。
plt.scatter(x, y)
- 多重散点图: 多重散点图比较多个变量之间的关系。
plt.scatter(x1, y1, label='Dataset 1') plt.scatter(x2, y2, label='Dataset 2')
- 彩色散点图: 彩色散点图根据数据值对点进行着色。
plt.scatter(x, y, c=z)
- 气泡散点图: 气泡散点图根据数据值控制点的尺寸。
plt.scatter(x, y, s=z)
- 三维散点图: 三维散点图增加深度感,展示变量之间的复杂关系。
from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter(x, y, z)
直方图:分析数据分布
- 简单直方图: 直方图显示数据的分布情况。
plt.hist(data)
- 多重直方图: 多重直方图比较多组数据的分布。
plt.hist([data1, data2], bins=5)
- 填充直方图: 填充直方图的区域突出显示数据分布的密度。
plt.hist(data, bins=5, density=True, alpha=0.5)
- 堆叠直方图: 堆叠直方图展示不同类别数据累积的分布。
plt.hist([data1, data2], bins=5, stacked=True)
- 百分比直方图: 百分比直方图显示不同类别数据占总体的百分比。
plt.hist(data, bins=5, density=True, cumulative=True)
箱线图:深入了解分布与离群值
- 简单箱线图: 箱线图展示数据的分布、中位数和离群值。
plt.boxplot(data)
- 分组箱线图: 分组箱线图在多个组别中比较数据的分布。
plt.boxplot([data1, data2], labels=['Group A', 'Group B'])
- 堆叠箱线图: 堆叠箱线图展示不同类别数据累积的分布。
plt.boxplot([data1, data2], labels=['Category A', 'Category B'], vert=False)
- 百分比箱线图: 百分比箱线图显示不同类别数据占总体的百分比。
plt.boxplot([data1, data2], labels=['Category A', 'Category B'], vert=False, showfliers=False)
- 三维箱线图: 三维箱线图增加深度感,提供更多信息。
from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = fig.add_subplot(111, projection='3