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

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.lryc.cn/news/486054.html

相关文章:

  • Python数据分析:分组转换transform方法
  • 高效灵活的Django URL配置与反向URL实现方案
  • 深入探讨 MySQL 配置与优化:从零到生产环境的最佳实践20241112
  • Java-Redisson分布式锁+自定义注解+AOP的方式来实现后台防止重复请求扩展
  • Java 全栈知识体系
  • 树状数组+概率论,ABC380G - Another Shuffle Window
  • 机器学习day1-数据集
  • 【Golang】——Gin 框架中的路由与请求处理
  • nuxt3添加wowjs动效
  • 我们是如何实现 TiDB Cloud Serverless 的 - 成本篇
  • PCL算法汇总
  • sql注入之二次注入(sqlilabs-less24)
  • Android compose 软键盘 遮挡对话框中TextField 输入框
  • spring-data-elasticsearch 3.2.4 实现桶bucket排序去重,实现指定字段的聚合搜索
  • 【项目开发】分析六种常用软件架构
  • 算法和程序的区别
  • 用指针遍历数组
  • 《Probing the 3D Awareness of Visual Foundation Models》论文解析——多视图一致性
  • 使用pip安装esp32的擦除、写入固件的esptool库
  • 传奇996_23——杀怪掉落,自动捡取,捡取动画
  • 【030】基于51单片机甲醛检测报警器【Proteus仿真+Keil程序+报告+原理图】
  • 微信小程序:vant组件库安装步骤
  • 处理namespace问题:Namespace not specified for AGP 8.0.0
  • C++(Qt)软件调试---内存分析工具Heob(26)
  • Redis五大基本类型——String字符串命令详解(命令用法详解+思维导图详解)
  • Flutter中的Material Theme完全指南:从入门到实战
  • Python 第三方库 PyQt5 的安装
  • CSS基础也要进行模电实验
  • 贴代码框架PasteForm特性介绍之markdown和richtext
  • 3D Gaussian Splatting 代码层理解之Part3