返回

深度透析Matplotlib:50张最具价值图表绘制大全(附赠完整Python源代码)

见解分享

数据可视化的利器:Matplotlib 的 50 个图表绘制方法

前言

在当今数据驱动的世界中,数据可视化已成为决策制定和理解复杂数据不可或缺的一部分。而对于 Python 而言,Matplotlib 则堪称数据可视化的王者。本文将深入探讨 Matplotlib 的 50 种强大图表绘制方法,并提供清晰易懂的 Python 源代码。无论是数据科学家、分析师还是开发人员,都能从这篇文章中受益匪浅。

折线图:捕捉趋势与变化

  1. 简单折线图: 绘制折线图是展现数据随时间变化趋势的最简单方法。
    plt.plot([1, 2, 3, 4], [5, 6, 7, 8])
    
  2. 多重折线图: 当您需要比较多组数据时,多重折线图可以轻松实现。
    plt.plot([1, 2, 3], [5, 6, 7], label='Dataset 1')
    plt.plot([1, 2, 3], [8, 9, 10], label='Dataset 2')
    
  3. 填充折线图: 填充折线图的区域可以突出显示数据变化的幅度。
    plt.fill_between([1, 2, 3], [5, 6, 7], [8, 9, 10], color='blue')
    
  4. 对数折线图: 当数据跨越多个数量级时,对数折线图可以有效压缩范围。
    plt.semilogy([1, 10, 100, 1000])
    
  5. 极坐标折线图: 极坐标折线图适合表现角度和幅度的数据。
    plt.polar([0, np.pi/2, np.pi, 3*np.pi/2], [1, 2, 3, 4])
    

条形图:比较与分布

  1. 简单条形图: 条形图直观展示不同类别的数值大小。
    plt.bar([1, 2, 3], [5, 6, 7])
    
  2. 分组条形图: 分组条形图在多个组别中比较不同类别的数据。
    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')
    
  3. 堆叠条形图: 堆叠条形图展示不同类别数据累积的总量。
    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')
    
  4. 水平条形图: 水平条形图将类别放在垂直轴上。
    plt.barh([1, 2, 3], [5, 6, 7])
    
  5. 百分比条形图: 百分比条形图显示不同类别数据占总体的百分比。
    plt.bar([1, 2, 3], [0.5, 0.25, 0.25])
    

饼图:展示比例与构成

  1. 简单饼图: 饼图将数据分成不同的扇形区域,表示各部分占整体的比例。
    plt.pie([5, 6, 7])
    
  2. 爆炸饼图: 爆炸饼图突出显示特定扇形区域。
    plt.pie([5, 6, 7], explode=[0.1, 0, 0])
    
  3. 环形图: 环形图在饼图内留有一个空心圆。
    plt.pie([5, 6, 7], radius=1, width=0.5)
    
  4. 百分比饼图: 百分比饼图显示每个扇形区域占整体的百分比。
    plt.pie([5, 6, 7], labels=['A', 'B', 'C'], autopct='%1.1f%%')
    
  5. 三维饼图: 三维饼图增加深度感,提升视觉效果。
    from mpl_toolkits.mplot3d import Axes3D
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    ax.pie([5, 6, 7])
    

散点图:揭示关系与分布

  1. 简单散点图: 散点图显示两个变量之间的关系。
    plt.scatter(x, y)
    
  2. 多重散点图: 多重散点图比较多个变量之间的关系。
    plt.scatter(x1, y1, label='Dataset 1')
    plt.scatter(x2, y2, label='Dataset 2')
    
  3. 彩色散点图: 彩色散点图根据数据值对点进行着色。
    plt.scatter(x, y, c=z)
    
  4. 气泡散点图: 气泡散点图根据数据值控制点的尺寸。
    plt.scatter(x, y, s=z)
    
  5. 三维散点图: 三维散点图增加深度感,展示变量之间的复杂关系。
    from mpl_toolkits.mplot3d import Axes3D
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    ax.scatter(x, y, z)
    

直方图:分析数据分布

  1. 简单直方图: 直方图显示数据的分布情况。
    plt.hist(data)
    
  2. 多重直方图: 多重直方图比较多组数据的分布。
    plt.hist([data1, data2], bins=5)
    
  3. 填充直方图: 填充直方图的区域突出显示数据分布的密度。
    plt.hist(data, bins=5, density=True, alpha=0.5)
    
  4. 堆叠直方图: 堆叠直方图展示不同类别数据累积的分布。
    plt.hist([data1, data2], bins=5, stacked=True)
    
  5. 百分比直方图: 百分比直方图显示不同类别数据占总体的百分比。
    plt.hist(data, bins=5, density=True, cumulative=True)
    

箱线图:深入了解分布与离群值

  1. 简单箱线图: 箱线图展示数据的分布、中位数和离群值。
    plt.boxplot(data)
    
  2. 分组箱线图: 分组箱线图在多个组别中比较数据的分布。
    plt.boxplot([data1, data2], labels=['Group A', 'Group B'])
    
  3. 堆叠箱线图: 堆叠箱线图展示不同类别数据累积的分布。
    plt.boxplot([data1, data2], labels=['Category A', 'Category B'], vert=False)
    
  4. 百分比箱线图: 百分比箱线图显示不同类别数据占总体的百分比。
    plt.boxplot([data1, data2], labels=['Category A', 'Category B'], vert=False, showfliers=False)
    
  5. 三维箱线图: 三维箱线图增加深度感,提供更多信息。
    from mpl_toolkits.mplot3d import Axes3D
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3