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.mzph.cn/web/59657.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文笔记(五十六)VIPose: Real-time Visual-Inertial 6D Object Pose Tracking

VIPose: Real-time Visual-Inertial 6D Object Pose Tracking 文章概括摘要I. INTRODACTIONII. 相关工作III. APPROACHA. 姿态跟踪工作流程B. VIPose网络 文章概括 引用: inproceedings{ge2021vipose,title{Vipose: Real-time visual-inertial 6d object pose tra…

K8S containerd拉取harbor镜像

前言 接前面的环境 K8S 1.24以后开始启用docker作为CRI,这里用containerd拉取 参考文档 正文 vim /etc/containerd/config.toml #修改内容如下 #sandbox_image "registry.aliyuncs.com/google_containers/pause:3.10" systemd_cgroup true [plugins.…

LM2 : A Simple Society of Language Models Solves Complex Reasoning

文章目录 题目摘要简介相关工作方法论实验结果结论局限性 题目 LM2:简单的语言模型社会解决复杂推理问题 论文地址:https://aclanthology.org/2024.emnlp-main.920/ 项目地址: https://github.com/LCS2-IIITD/Language_Model_Multiplex 摘要…

STM32从上电开始启动过程详解(上电->分散加载->main函数)

1.硬件复位之后,CPU 内的时序逻辑电路首先完成如下两个工作( 程序代码下载到内部 flash 为例,flash首地址 0x0800 0000)  将 0x08000000 位置存放的堆栈栈顶地址存放到 SP 中(MSP)。  将 0x08000004 位置存放的向量地址装入 P…

新版Apache tomcat服务安装 Mac+Window双环境(笔记)

简介:Tomcat服务器器的下载和安装: 安装前提 1)电脑需要有java环境,jdk8以上,否则启动不不成功 2)已经安装Sublime⽂文件编辑软件 3)window电脑需要显示⽂文件拓拓展名 官网(https:…

机器学习 决策树

决策树-分类 1 概念 1、决策节点通过条件判断而进行分支选择的节点。如:将某个样本中的属性值(特征值)与决策节点上的值进行比较,从而判断它的流向。 2、叶子节点没有子节点的节点,表示最终的决策结果。 3、决策树的深度所有节点的最大层…

数据重塑:长宽数据转换【基于tidyr】

在数据分析和可视化过程中,数据的组织形式直接影响着我们能够进行的分析类型和可视化效果。这里简单介绍两种常见的数据格式:长格式(Long Format)和宽格式(Wide Format),以及如何使用tidyr包进行…

全面解读 USB Key:定义、使用场景、加密技术及 Java 实现

文章目录 **什么是 USB Key?****USB Key 的使用场景**1. **身份认证**2. **数字签名**3. **数据加密与解密**4. **证书管理** **USB Key 解决的问题****USB Key 使用的加密技术**1. **对称加密**2. **非对称加密**3. **哈希算法**4. **数字签名**5. **PKI&#xff0…

ollama+springboot ai+vue+elementUI整合

1. 下载安装ollama (1) 官网下载地址:https://github.com/ollama/ollama 这里以window版本为主,下载链接为:https://ollama.com/download/OllamaSetup.exe。 安装完毕后,桌面小图标有一个小图标,表示已安装成功&…

WPF 应用程序中使用 Prism 框架时,有多种方式可以注册服务和依赖项

Prism 提供了更多的注册方式,适应不同的需求和场景。下面我会全面列出 IContainerRegistry 提供的所有常见注册方式,并附带相应的示例。1. 注册单例(Singleton) 注册单例类型服务,整个应用生命周期内只会创建一个实例&…

基于lighthouse搭建私有网盘Cloudreve【开源应用实践】

基于lighthouse搭建私有网盘Cloudreve【超高性价比】 今天给大家分享一款私人网盘神器,既能存放你的文件文档,也能替你保存那不可告人的秘密~ 香菇今天将手把手教给大家如何在腾讯云轻量应用服务器上搭建个人专属网盘 1. 既爱又恨的网盘存储 很多小伙伴…

vue项目PC端和移动端实现在线预览docx、excel、pdf文件

可以参考vue-office官方github:​​​​​​​GitHub - loonghe/vue-office: 支持word(.docx)、excel(.xlsx,.xls)、pdf等各类型office文件预览的vue组件集合,提供一站式office文件预览方案,支持vue2和3,也支持React等非Vue框架。…

【CSS问题】margin塌陷

CSS中的margin塌陷是一个常见的布局问题,主要发生在垂直方向上,当两个或多个元素的垂直margin相遇时,它们不会按照预期叠加,而是会发生重叠,导致最终的外边距值比单独设置时小。 一、margin塌陷的原因 同级元素&#…

JavaScript高级篇 - 浏览器事件详解 DOM事件以及独立封装事件Util和Ajax封装

Dom事件 Model(特定领域对象的抽象)、Protocal(针对数据格式的约定) DOM(Document Object Model,文档对象模型)是针对HTML文档和XML文档的一个API。DOM描绘了一个层次化的节点树,允许开发人员添加、移出和…

MinIO 的 S3 over RDMA 计划: 为高速人工智能数据基础设施设定对象存储新标准

随着 AI 和机器学习的需求不断加速,数据中心网络正在迅速发展以跟上步伐。对于许多企业来说,400GbE 甚至 800GbE 正在成为标准选择,因为数据密集型和时间敏感型 AI 工作负载需要高速、低延迟的数据传输。用于大型语言处理、实时分析和计算机视…

git config是做什么的?

git config是做什么的? git config作用配置级别三种配置级别的介绍及使用,配置文件说明 使用说明git confi查看参数 默认/不使用这个参数 情况下 Git 使用哪个配置等级? 一些常见的行为查看配置信息设置配置信息删除配置信息 一些常用的配置信…

电能表预付费系统-标准传输规范(STS)(41)

7.3.7 TokenValidation Class 0 and Class 2 tokens shall primarily be validated against the TID encoded in the token, except for key change token set. 除密钥更改令牌集外,类别0和类别2令牌应主要针对令牌中编码的TID进行验证。 Key change tokens are va…

使用 npm 安装 Yarn

PS E:\WeChat Files\wxid_fipwhzebc1yh22\FileStorage\File\2024-11\spid-admin\spid-admin> yarn install yarn : 无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后…

51单片机使用NRF24L01进行2.4G无线通信

本文并不打算详细介绍NRF24L01的各个功能寄存器及指令的详细用法,因为网上都可以搜到很多非常详细的教程文档,这里只是介绍一些基本概念、用法以及代码的解释,旨在帮助新手能够快速上手调通快速使用。 基础概念 该模块使用的是SPI协议&…

python怎么加锁

在Python中,加锁是一种常见的线程同步机制,用于防止多个线程同时访问共享资源,从而避免数据竞争和不一致的问题。Python提供了多种方式来实现加锁: 1. threading模块的Lock threading.Lock是最基本的锁机制,它允许一…