当前位置: 首页 > article >正文

Python的Matplotlib

介绍:

Matplotlib 是一个非常强大的 Python 绘图库,支持多种不同类型的图表。以下是 Matplotlib 支持的一些常见图表类型:

前情提要:

from matplotlib import rcParams

# 设置支持中文的字体
rcParams['font.sans-serif'] = ['SimHei']  # 设置中文字体为黑体
rcParams['axes.unicode_minus'] = False  # 正常显示负号

如果你要使用中文中必不可少

类型:

2D 图表

  1. 折线图 (Line Plot)

    1. 显示数据点之间的连接线,适合展示趋势。

    2. import matplotlib.pyplot as plt
      
      # 数据:x 轴和 y 轴
      x = [1, 2, 3, 4, 5]
      y = [1, 4, 9, 16, 25]
      
      # 绘制折线图
      plt.plot(x, y)
      
      # 添加标题和标签
      plt.title("简单的折线图")
      plt.xlabel("x 轴")
      plt.ylabel("y 轴")
      
      # 显示图形
      plt.show()
      
    3. 代码解析

      1. 数据准备xy 分别是 x 轴和 y 轴的数据。x 轴可以是时间、序列等,y 轴是对应的数值。

      2. 绘制折线图plt.plot(x, y) 用于绘制折线图。xy 为输入的数据点。

      3. 添加标题和标签

        • plt.title("简单的折线图"):设置图表标题。
        • plt.xlabel("x 轴"):设置 x 轴的标签。
        • plt.ylabel("y 轴"):设置 y 轴的标签。
      4. 显示图形plt.show() 用于显示绘制的图形。

    4. 自定义折线图

      • 多条折线图:可以同时绘制多条折线图,用不同的颜色区分。

        • y2 = [25, 20, 15, 10, 5]

          plt.plot(x, y, label="线条 1")

          plt.plot(x, y2, label="线条 2", linestyle='--')

          plt.legend()  # 添加图例

      • 标记数据点:在折线图上显示每个数据点的位置。

        • plt.plot(x, y, marker='o')  # 在数据点上加上圆圈标记

      • 线条样式:你可以修改线条的样式,例如虚线、点线、颜色等。

        • plt.plot(x, y, linestyle='--', color='r')  # 红色虚线

  2. 散点图 (Scatter Plot)

    1. 用点表示数据,适合展示两变量之间的关系。

    2. import matplotlib.pyplot as plt
      
      # 数据:x 轴和 y 轴
      x = [1, 2, 3, 4, 5]
      y = [1, 4, 9, 16, 25]
      
      # 绘制散点图
      plt.scatter(x, y)
      
      # 添加标题和标签
      plt.title("简单的散点图")
      plt.xlabel("x 轴")
      plt.ylabel("y 轴")
      
      # 显示图形
      plt.show()
      
    3. 代码解析

      1. 数据准备xy 是两个变量的值,分别对应散点图中的 x 轴和 y 轴。

      2. 绘制散点图:使用 plt.scatter(x, y) 来绘制散点图。与折线图不同,散点图没有连接线,而是通过独立的点来表示数据。

      3. 添加标题和标签

        1. plt.title("简单的散点图"):设置图表标题。
        2. plt.xlabel("x 轴"):设置 x 轴的标签。
        3. plt.ylabel("y 轴"):设置 y 轴的标签。
      4. 显示图形plt.show() 用于显示图形。

    4. 自定义散点图

      1. 改变点的大小和颜色
        • s 用于控制点的大小。
        • c 用于控制点的颜色。
          • plt.scatter(x, y, s=100, c='r')  # 红色且较大的点
      2. 使用不同的标记样式
        • marker 参数允许选择不同的标记类型(如圆圈、星号等)。
          • plt.scatter(x, y, marker='*')  # 星号标记
      3. 绘制多个系列:如果你有多个数据集,可以在同一张图上绘制多个散点图。
        • y2 = [25, 20, 15, 10, 5]
          plt.scatter(x, y, label="系列 1", c='b')  # 蓝色点
          plt.scatter(x, y2, label="系列 2", c='g')  # 绿色点
          plt.legend()  # 添加图例
  3. 条形图 (Bar Plot)

    1. 使用条形表示数据,适合展示类别数据。

    2. import matplotlib.pyplot as plt
      
      # 数据
      categories = ['苹果', '香蕉', '橙子', '葡萄', '梨']
      values = [50, 30, 45, 20, 25]
      
      # 创建条形图
      plt.bar(categories, values)
      
      # 添加标题和标签
      plt.title("水果数量")
      plt.xlabel("水果")
      plt.ylabel("数量")
      
      # 显示图形
      plt.show()
      
    3. 代码解析:

      1. plt.bar(categories, values):绘制条形图,其中 categories 是条形图的类别,values 是每个类别对应的值。
      2. plt.title("水果数量"):为图表添加标题。
      3. plt.xlabel("水果")plt.ylabel("数量"):为x轴和y轴添加标签。
      4. plt.show():显示图形。
    4. 水平条形图

      除了竖直的条形图,还可以绘制水平条形图,使用 plt.barh()

      1. import matplotlib.pyplot as plt
        import numpy as np
        
        # 数据
        categories = ['苹果', '香蕉', '橙子', '葡萄', '梨']
        values1 = [10, 20, 15, 25, 30]
        values2 = [40, 10, 30, 20, 25]
        
        # 创建堆叠条形图
        plt.barh(categories, values1, label='类型1')
        plt.barh(categories, values2, bottom=values1, label='类型2')
        
        # 添加标题和标签
        plt.title("堆叠条形图")
        plt.xlabel("水果")
        plt.ylabel("数量")
        plt.legend()
        
        # 显示图形
        plt.show()
        
    5. 堆叠条形图

      如果你有多个数据系列,并且想要在同一类别中显示多个堆叠的条形,可以使用堆叠条形图。堆叠条形图将每个类别的条形分成几个部分,表示不同的数据系列。

      1. import matplotlib.pyplot as plt
        import numpy as np
        
        # 数据
        categories = ['苹果', '香蕉', '橙子', '葡萄', '梨']
        values1 = [10, 20, 15, 25, 30]
        values2 = [40, 10, 30, 20, 25]
        
        # 创建堆叠条形图
        plt.bar(categories, values1, label='类型1')
        plt.bar(categories, values2, bottom=values1, label='类型2')
        
        # 添加标题和标签
        plt.title("堆叠条形图")
        plt.xlabel("水果")
        plt.ylabel("数量")
        plt.legend()
        
        # 显示图形
        plt.show()
        
      2. 代码解析:

        1. plt.bar(categories, values1)plt.bar(categories, values2, bottom=values1):这两行代码绘制堆叠条形图,其中第二个 bar() 函数通过 bottom 参数指定了堆叠的底部。
        2. plt.legend():为堆叠条形图添加图例。
  4. 直方图 (Histogram)

    1. 用于展示数据的频率分布,常用于描述单一变量。

    2. import matplotlib.pyplot as plt
      # 生成随机数据
      data = np.random.randn(1000)
      
      # 绘制直方图
      plt.hist(data, bins=30, edgecolor='black')  # bins: 划分区间的数量
      
      # 添加标题和标签
      plt.title("随机数据的直方图")
      plt.xlabel("值")
      plt.ylabel("频率")
      
      # 显示图形
      plt.show()
      
    3. 代码解析:

      1. np.random.randn(1000):生成1000个服从标准正态分布(均值为0,标准差为1)的随机数。
      2. plt.hist(data, bins=30, edgecolor='black'):绘制直方图,bins=30表示将数据划分成30个区间,edgecolor='black'为每个条形的边缘设置颜色。
      3. plt.title("随机数据的直方图"):为图表添加标题。
      4. plt.xlabel("值")plt.ylabel("频率"):为x轴和y轴添加标签。
    4. 参数解析:

      1. data:输入的数据集,可以是任何一维数据(例如列表、数组等)。
      2. bins:指定将数据划分成多少个区间。通常,bins的值越大,直方图越精细;越小,直方图越粗糙。也可以传入一个区间边界的数组来自定义每个桶的范围。
      3. edgecolor:条形的边缘颜色,通常用于让直方图的条形更加明显。
    5. 修改直方图的外观

      1. 改变颜色
        1. plt.hist(data, bins=30, edgecolor='black', color='skyblue')  # 设置条形的颜色
      2. 使用不同的间隔方式

        bins参数可以接受不同类型的输入:

        1. 整数:表示将数据划分为多少个区间。
        2. 序列:一个数组,表示区间的具体边界。
        3. bins = [-3, -2, -1, 0, 1, 2, 3]
          plt.hist(data, bins=bins, edgecolor='black')
      3. 对数刻度

        如果数据的范围非常广,可以使用对数刻度来调整y轴显示:

        1. plt.hist(data, bins=30, edgecolor='black')
          plt.yscale('log')  # 设置y轴为对数刻度

    6. 多个数据集的直方图

      1. import matplotlib.pyplot as plt
        import numpy as np
        
        # 生成两组随机数据
        data1 = np.random.randn(1000)
        data2 = np.random.randn(1000)
        
        # 绘制两个数据集的直方图
        plt.hist(data1, bins=30, alpha=0.5, label='数据集1')
        plt.hist(data2, bins=30, alpha=0.5, label='数据集2')
        
        # 添加标题、标签和图例
        plt.title("两个数据集的直方图")
        plt.xlabel("值")
        plt.ylabel("频率")
        plt.legend()
        
        # 显示图形
        plt.show()
        
      2. 代码解析:

        1. alpha=0.5:设置条形的透明度,使两个直方图能够重叠显示。
        2. plt.legend():显示图例,帮助区分不同数据集。
  5. 饼图 (Pie Chart)

    1. 用圆形图表示各部分占整体的比例。

    2. import matplotlib.pyplot as plt
      
      # 数据
      labels = ['A', 'B', 'C', 'D']
      sizes = [15, 30, 45, 10]  # 每个部分的数值
      colors = ['#ff9999','#66b3ff','#99ff99','#ffcc99']  # 每个部分的颜色
      explode = (0.1, 0, 0, 0)  # 使第一块稍微突出显示
      
      # 绘制饼图
      plt.pie(sizes, labels=labels, colors=colors, explode=explode, autopct='%1.1f%%', startangle=140)
      
      # 添加标题
      plt.title('简单的饼图')
      
      # 显示图形
      plt.show()
      
    3. 代码解析:

      1. labels:指定每个扇区的标签(如A、B、C、D)。
      2. sizes:指定每个扇区的数值(代表各部分占整体的比例)。
      3. colors:为每个扇区指定不同的颜色。
      4. explode:突出显示某些部分(例如,(0.1, 0, 0, 0)表示将第一个部分突出显示)。
      5. autopct='%1.1f%%':显示每个扇区的百分比,保留1位小数。
      6. startangle=140:设置饼图起始角度,默认是从0度开始。通过调整startangle可以旋转饼图,使其更美观。
    4. 饼图的常用参数:

      1. labels:为每个扇区指定一个标签。
      2. sizes:每个扇区的数值或比例。
      3. colors:为每个扇区指定颜色。
      4. autopct:显示扇区的百分比。
      5. startangle:设置饼图的起始角度,默认为0,调整它可以改变饼图的起始显示方向。
      6. explode:通过偏移某些扇区来突出显示,值越大,扇区偏移越远。
    5. 饼图的更多自定义:

      1. 调整扇区标签的字体

        1. plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=140, textprops={'fontsize': 12})

      2. 设置阴影效果

        1. plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=140, shadow=True)

      3. 设置饼图的圆形比例: 默认情况下,plt.pie()会绘制一个椭圆形的饼图,如果你希望它呈现圆形,可以设置axisequal

        1. plt.axis('equal')  # 保证饼图是圆形的

    6. 展示多个饼图:

      如果你有多个饼图数据,可以在同一张图中绘制多个饼图,使用subplot()进行布局。例如:

      1. fig, axs = plt.subplots(1, 2, figsize=(10, 5))
        
        # 第一个饼图
        axs[0].pie(sizes, labels=labels, autopct='%1.1f%%', startangle=140)
        axs[0].set_title('饼图1')
        
        # 第二个饼图
        axs[1].pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)
        axs[1].set_title('饼图2')
        
        # 显示图形
        plt.show()
        
  6. 面积图 (Area Plot)

    1. 类似于折线图,但下方区域被填充,适合展示趋势及组成。

    2. import matplotlib.pyplot as plt
      
      # 数据
      x = [1, 2, 3, 4, 5]
      y = [1, 4, 9, 16, 25]
      
      # 绘制面积图
      plt.fill_between(x, y, color="skyblue", alpha=0.4)
      
      # 添加标题和标签
      plt.title("简单的面积图")
      plt.xlabel("x")
      plt.ylabel("y")
      
      # 显示图形
      plt.show()
      
    3. 代码解析:

      1. plt.fill_between(x, y, color="skyblue", alpha=0.4)fill_between()函数用来绘制面积图,xy定义了数据点,color设置填充颜色,alpha控制填充的透明度。
      2. plt.title():设置图表的标题。
      3. plt.xlabel()plt.ylabel():设置x轴和y轴的标签。
    4. 堆叠面积图:多个系列

      堆叠面积图不仅展示每个系列的数据,还可以看到每个部分如何累积在一起。适合展示多个部分对整体趋势的贡献。

      1. import matplotlib.pyplot as plt
        
        # 数据
        x = [1, 2, 3, 4, 5]
        y1 = [1, 2, 3, 4, 5]
        y2 = [1, 3, 5, 7, 9]
        
        # 绘制堆叠面积图
        plt.stackplot(x, y1, y2, labels=["y1", "y2"], alpha=0.5)
        
        # 添加标题和标签
        plt.title("堆叠面积图")
        plt.xlabel("x")
        plt.ylabel("y")
        plt.legend(loc="upper left")
        
        # 显示图形
        plt.show()
        
      2. 代码解析:

        1. plt.stackplot(x, y1, y2, labels=["y1", "y2"], alpha=0.5)stackplot()函数用来绘制堆叠面积图,可以传入多个系列数据(如y1y2),通过堆叠的方式显示它们的变化。
        2. labels:为每个系列指定标签。
        3. alpha=0.5:设置填充透明度。
      3. 面积图的常用参数:

        1. color:设置填充颜色。
        2. alpha:设置透明度,范围为0到1,值越小,透明度越高。
        3. labels:用于堆叠图时,为每个部分提供标签。
        4. linewidth:设置线条的宽度。
        5. linestyle:设置线条的样式。
  7. 箱型图 (Box Plot)

    1. 用于展示数据的分布情况,显示中位数、四分位数和异常值。

  8. 热图 (Heatmap)

    1. 使用颜色表示数据的强度,适合展示矩阵或二维数据。

  9. 雷达图 (Radar Chart)

    1. 显示多变量的关系,适合展示具有多个维度的数据。

  10. 阶梯图 (Step Plot)

    1. 线段之间为水平,适合展示步骤变化的数据。

  11. 堆积图 (Stacked Plot)

    1. 类似于面积图,但多个数据系列叠加在一起,展示部分与整体的关系。

  12. 双坐标轴图 (Dual Axis Plot)

    1. 使用两个 y 轴显示不同量纲的数据,适合比较不同数据源。

  13. 条形图 (Horizontal Bar Plot)

    1. 条形图的水平版,适合数据分类较多时显示。

  14. 矩形树图 (Tree Map)

    1. 用矩形区域表示层级数据,面积大小与数据值相关。

  15. 渐变图 (Gradient Plot)

    1. 展示颜色从一个色带到另一个色带的渐变,适用于表示数据的变化。

  16. 时间序列图 (Time Series Plot)

    1. 用于显示随时间变化的数据,通常用于金融、经济数据的可视化。

  17. 分布图 (Distribution Plot)

    1. 显示数据的概率分布,通常用于展示数据的密度。

3D 图表

  1. 3D 散点图 (3D Scatter Plot)

    1. 展示三维空间中的数据点,适合分析三维数据的分布。

  2. 3D 曲面图 (3D Surface Plot)

    1. 用于展示三维数据的表面,适合分析三维数据之间的关系。

  3. 3D 等高线图 (3D Contour Plot)

    1. 显示三维数据的等高线,适合分析高度、温度等变化情况。

  4. 3D 栅格图 (3D Wireframe Plot)

    1. 显示三维数据的网格线,适合展示函数图形。

  5. 3D 线图 (3D Line Plot)

    1. 类似于 2D 折线图,但增加了三维的效果,适合展示三维数据的变化。

  6. 3D 直方图 (3D Histogram)

    1. 类似于 2D 直方图,但用于展示三维数据的分布。

总结:

Matplotlib 支持多种类型的图表,适用于不同的场景和需求,包括折线图、散点图、条形图、饼图、直方图、箱型图等。你可以根据数据的特点选择合适的图表类型来展示数据。需要注意的是,Matplotlib 的功能不仅仅限于这些基本图表,你还可以自定义很多其他图形、样式和特效。


http://www.kler.cn/a/397839.html

相关文章:

  • Chrome和Chromium的区别?浏览器引擎都用的哪些?浏览器引擎的作用?
  • 爬虫开发工具与环境搭建——开发工具介绍
  • CSS Modules中的 :global
  • Electron 沙盒模式与预加载脚本:保障桌面应用安全的关键机制
  • 接上篇-使用 element-plus 优化UI界面
  • 使用Redis的一些经验总结
  • LoFTR: Detector-Free Local Feature Matching with Transformers—特征点匹配算法系列
  • 【OceanBase 诊断调优】—— ocp上针对OB租户CPU消耗计算逻辑
  • Vue3 -- 项目配置之husky【企业级项目配置保姆级教程4】
  • 【青牛科技】D4147漏电保护电路介绍及应用
  • 刘艳兵-DBA038-以下关于Oracle SGA和PGA的描述中,哪些是正确的?
  • (不看后悔系列二)python网络爬虫爬取网络视频
  • uniapp设置tabBar高斯模糊并设置tabBar高度占位
  • 【客户服务】互联网时代客户投诉处理金点子
  • java对接php系统的AES加密 但是提供的key不符合长度的PKCS7填充补全
  • 工化企业内部能源能耗过大 落实能源管理
  • unity 一个物体随键盘上下左右旋转和前进的脚本
  • 【鸿蒙开发】第十四章 Web组件的使用、基本属性与事件
  • leetcode 扫描线专题 06-leetcode.252 meeting room 力扣.252 会议室
  • LeetCode 90-子集Ⅱ
  • 高阶C语言补充:柔性数组
  • python实战案例----使用 PyQt5 构建简单的 HTTP 接口测试工具
  • 机器学习-基本术语
  • html中select标签的选项携带多个值
  • 【EasyExcel】复杂导出操作-自定义颜色样式等(版本3.1.x)
  • 【因果分析方法】MATLAB计算Liang-Kleeman信息流