Python使用matplotlib绘制图形大全(曲线图、条形图、饼图等)

news2025/2/4 10:44:19

matplotlib 的主要组成部分是 pyplot,它是一个类似于 MATLAB 的绘图框架。pyplot 提供了一个 MATLAB 式的接口,可以隐式地创建图形和轴,使得绘图变得简单。

以下是一个简单的 matplotlib 使用示例,用于绘制一条简单的折线图:

在这个例子中,我们首先导入了 matplotlib.pyplotnumpy。然后,我们创建了一组数据 xy,其中 yx 的正弦函数。接下来,我们使用 plt.figure() 创建一个新的图形,并使用 plt.plot() 绘制折线图。最后,我们设置了图表的标题和坐标轴标签,并使用 plt.show() 显示图形。

这只是 matplotlib 的一个基本示例。该库提供了许多其他功能,包括散点图、条形图、饼图、3D 图形、等高线图等。此外,matplotlib 还支持自定义颜色、线型、标记等,以及添加图例、网格等。

二、matplotlib 支持的图形

matplotlib 是一个非常灵活的绘图库,支持绘制多种类型的图形。以下是一些 matplotlib 支持的主要图形类型:

  • 线图 (Line Plots): 最基本的图形类型,用于显示数据点的连接。
  • 散点图 (Scatter Plots): 用于显示两个变量之间的关系,通过点的分布来表示。
  • 条形图 (Bar Charts): 适用于展示分类数据的相对大小。
  • 直方图 (Histograms): 展示数据分布的统计图,通常用于表示连续变量的分布情况。
  • 饼图 (Pie Charts): 用于表示整体中各部分的比例关系。
  • 箱图 (Box Plots): 用于展示数据的分布情况,包括中位数、四分位数、最大值、最小值以及可能存在的异常值。
  • 面积图 (Area Charts): 类似于线图,但是下方区域会被填充颜色,用于表示数据随时间的变化量。
  • 等高线图 (Contour Plots): 通常用于表示三维数据在二维平面上的投影,通过等高线展示数据点的密集程度。
  • 热力图 (Heatmap): 通过颜色的深浅来表示数据矩阵中各个值的大小。
  • 极坐标图 (Polar Plots): 在极坐标系中展示数据点,常用于表示与角度相关的信息。
  • 三维图形 (3D Plots): 用于在三维空间中展示数据点的分布情况,可以创建三维散点图、三维曲面图等。
  • 堆叠图 (Stacked Plots): 适用于展示多个分类数据系列的累积效果,如堆叠条形图或堆叠面积图。
  • 误差条图 (Error Bar Charts): 用于表示数据点的不确定性或变化范围。
  • 矢量场图 (Vector Fields): 用于表示矢量数据,如风向或流体的流动方向。
  • 流线图 (Stream Plots): 类似于矢量场图,但更侧重于表示流体的流动路径。

matplotlib 还支持许多其他高级和定制化的图形,包括但不限于小提琴图 (violin plots)、树状图 (dendrograms)、雷达图 (radar charts) 等。由于其强大的定制性和灵活性,matplotlib 已经成为数据可视化的重要工具之一。

三、如何使用matplotlib

使用matplotlib进行数据可视化是一个相对直接的过程。以下是一个清晰、分点的指南,帮助您开始使用matplotlib

1. 安装matplotlib

首先,确保您已经安装了matplotlib库。如果还没有安装,可以使用pip进行安装:

2. 导入matplotlib.pyplot

在Python脚本或Jupyter Notebook中,您需要导入matplotlib.pyplot模块,通常我们使用别名plt来引用它:

3. 准备数据

准备您要可视化的数据。这可以是实验数据、统计数据或任何您想要展示的信息。

4. 绘制图形

使用plt中的函数来绘制您想要的图形。以下是一些常见图形的绘制方法:

5. 定制图形

您可以添加标题、轴标签、图例以及调整轴的范围等:

6. 显示或保存图形

最后,使用plt.show()来显示图形,或者使用plt.savefig()来保存图形到文件:

7. (可选)使用subplots创建多个子图

如果您想在同一个窗口中显示多个图形,可以使用plt.subplots()

注意事项:

  • 确保您的数据格式正确,并且与所选的图形类型兼容。
  • matplotlib具有高度的可定制性,您可以通过查阅官方文档来了解更多高级功能和定制选项。
  • 在绘制复杂图形时,考虑使用面向对象的方式来操作图形和轴对象,这可以提供更精细的控制。

四、常见图形使用示例

下面我会通过具体的代码示例来介绍matplotlib库中常见图形的绘制方法。

1. 线图 (Line Plot)

线图通常用于展示数据随时间的变化趋势。

在这里插入图片描述

2. 散点图 (Scatter Plot)

散点图用于展示两个变量之间的关系。

在这里插入图片描述

3. 条形图 (Bar Chart)

条形图适用于展示分类数据的相对大小。

在这里插入图片描述

4. 直方图 (Histogram)

直方图用于展示数据分布的统计图。

在这里插入图片描述

5. 饼图 (Pie Chart)

饼图用于表示整体中各部分的比例关系。

在这里插入图片描述

6. 直方图 2d

直方图用于展示数据分布的统计图。

在这里插入图片描述

7. 面积图(Area Plot)

面积图是一种展示数据随时间变化趋势的图形,通常用于显示时间序列数据。

在这里插入图片描述

8. 热力图(Heatmap)

热力图通常用于显示数据矩阵中各个元素值的大小,通过颜色来表示数值。

示例1

在这里插入图片描述

示例2

在这里插入图片描述

9. 三维图形(3D Plot)

Matplotlib也支持三维图形的绘制,例如三维散点图、三维曲面图等。

在这里插入图片描述

10. 堆叠图(Stacked Plot)

堆叠图通常用于展示不同类别数据随某个变量的累积变化。

在这里插入图片描述

这些代码示例展示了如何使用matplotlib绘制常见的图形。您可以根据需要调整数据和图形属性来定制您的图表。每个图形类型都有许多可配置的选项,例如颜色、线型、标记样式等,您可以通过查阅matplotlib的官方文档来了解更多细节。

五、常用函数

matplotlib库中,有许多常用的函数用于数据可视化。以下是一些matplotlib.pyplot模块中常用的函数:

函数描述使用示例
plot()绘制线图plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
scatter()绘制散点图plt.scatter([1, 2, 3, 4], [1, 4, 9, 16])
bar()绘制条形图plt.bar([1, 2, 3, 4], [10, 15, 7, 10])
hist()绘制直方图data = np.random.randn(1000); plt.hist(data, bins=30)
pie()绘制饼图plt.pie([10, 20, 30, 40], labels=['A', 'B', 'C', 'D'])
boxplot()绘制箱线图data = np.random.normal(100, 20, 200); plt.boxplot(data)
imshow()显示图像image = np.random.rand(10, 10); plt.imshow(image)
xlabel()设置X轴标签plt.xlabel('Time')
ylabel()设置Y轴标签plt.ylabel('Amplitude')
title()设置图形标题plt.title('Sample Plot')
xlim()设置X轴范围plt.xlim(0, 10)
ylim()设置Y轴范围plt.ylim(-1, 1)
xticks()设置X轴刻度plt.xticks([0, 1, 2, 3], ['zero', 'one', 'two', 'three'])
yticks()设置Y轴刻度plt.yticks([-1, 0, 1], ['min', 'zero', 'max'])
legend()添加图例plt.plot([1, 2, 3], label='Line 1'); plt.legend()
grid()添加网格线plt.grid(True)
show()显示图形plt.plot([1, 2, 3], [1, 4, 9]); plt.show()
savefig()保存图形plt.plot([1, 2, 3], [1, 4, 9]); plt.savefig('plot.png')

请注意,上述示例代码仅为简单演示函数的使用,实际应用中可能需要根据具体需求调整参数和设置。另外,为了使示例代码简洁明了,这里没有包含数据准备和图形细节调整的部分。在实际应用中,你通常需要先准备好数据,并根据需要调整图形的各种属性(如线型、颜色、标签等)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2191133.html

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

相关文章

Linux:进程间通信之信号量

system V的进程间通信除了共享内存,还有消息队列和信号量 IPC(进程间通信的简称) 消息队列 消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法 每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同…

Electron 使⽤ electron-builder 打包应用

electron有几种打包方式,我使用的是electron-builder。虽然下载依赖的时候让我暴躁,使用起来也很繁琐,但是它能进行很多自定义,打包完成后的体积也要小一些。 安装electron-builder: npm install electron-builder -…

cherry-markdown开源markdown组件详细使用教程

文章目录 前言开发定位目标调研技术方案前提工作量安排数据库表设计实现步骤1、引入依赖2、实现cherry-markdown的vue组件(修改上传接口路径)3、支持draw.io组件4、支持展示悬浮目录toc前端使用:编辑状态使用cherry-markdown的vue组件前端使用…

图像转3D视差视频:DepthFlow

参看: https://github.com/BrokenSource/DepthFlow 通过深度图实现图像3d效果 安装 https://brokensrc.dev/get/pypi/#installing pip insatll depthflow shaderflow broken-source pianola spectronote turbopipe 使用 1、下载项目 git clone https://github.com/BrokenS…

巧用armbian定时任务控制开发板LED的亮灭

新买了个瑞莎 3E 开发板,号称最小SBC,到了之后简直玩开了花,各种折腾后 安装好armbian系统,各种调优。 不太满意的地方:由于太小的原因,导致两个USBTYPEC的接口距离很近,所以买的OTG转接口如果有点宽的话 会显得特别拥挤。 还有就是每天晚上天黑了之后,卧室里的…

大数据处理从零开始————4.认识HDFS分布式文件系统

1.分布式文件系统HDFS 1.1 认识HDFS 当单台服务器的存储容量和计算性能已经无法处理大文件时,分布式文件系统应运而生。什么是分布式系统,分布式系统是由多个独立的计算机或节点组成的系统,这些计算机通过网络连接&#xff…

Map: 地图

对全国2023年各省市的人口分布情况,做出地图展示效果 参考:Map - Map_base - Document (pyecharts.org) 1、模板 # -*- coding: gbk -*- from pyecharts import options as opts from pyecharts.charts import Map from pyecharts.faker import Faker…

如何安全地大规模部署 GenAI 应用程序

大型语言模型和其他形式的生成式人工智能(GenAI) 的广泛使用带来了许多组织可能没有意识到的安全风险。幸运的是,网络和安全提供商正在寻找方法来应对这些前所未有的威胁。 随着人工智能越来越深入地融入日常业务流程,它面临着泄露专有信息、提供错误答…

交换排序:冒泡排序、递归实现快速排序

目录 冒泡排序 1.冒泡排序的核心思想 2.冒泡排序的思路步骤 3.冒泡排序代码 4.代码分析 5.对冒泡排序的时间复杂度是O(N^2)进行解析 6.冒泡排序的特性总结 递归实现快速排序(二路划分版本) 1.快速排序基本思路 2.代码思路步骤 3.代码实现 4.代码分析 (1)递归终止条…

队列的实现与讲解

一.概念与结构 1.概念 只允许在⼀端进行插⼊数据操作,在另⼀端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) ​ 入队列:进⾏插⼊操作的⼀端称为队尾 ​ 出队列:进⾏删除操作的⼀端称为队头 注意&…

美联储巨亏背后的秘密

听说美联储报告称亏损已破2000亿美元,这一数字无疑触动了市场的敏感神经。 亏损的直接原因是美联储在加息周期期间,为了维持短期利率在目标水平,向金融机构支付的利息超过了其持有债券的利息收入。 然而,美联储官员强调&#xff…

学习C语言(23)

整理今天的学习内容 1.文件的概念 使用文件是为了将数据永久化地保存 按照文件功能,在程序设计中一般把文件分成两类: 每个文件都有一个唯一的文字标识,文字标识常被称为文件名,文件名包含文件路径,文件名主干和文件…

如何快速切换电脑的ip地址

在当今的数字化时代,IP地址作为网络身份的重要标识,其重要性日益凸显。无论是出于保护个人隐私的需要,还是为了访问特定的网络服务等,快速切换电脑的IP地址已成为许多用户的迫切需求。本文将为你介绍几种实用的方法,帮…

【Hadoop】改一下core-site.xml和hdfs-site.xml配置就可以访问Web UI

core-site.xml: hdfs-site.xml: 所有的都改为0.0.0.0 就可以访问Web UI 原因: 使用 0.0.0.0 作为绑定地址时,实际会将服务监听在所有可用的网络接口上。这意味着,任何从外部访问的请求都可以通过任何网络适配器连接到…

黑神话:仙童,数据库自动反射魔法棒

黑神话:仙童,数据库自动反射魔法棒 Golang 通用代码生成器仙童发布了最新版本电音仙女尝鲜版十一及其介绍视频,视频请见:https://www.bilibili.com/video/BV1ET4wecEBk/ 此视频介绍了使用最新版的仙童代码生成器,将 …

算法笔记(六)——链表

文章目录 两数相加两两交换链表中的节点重排链表合并 K 个升序链表K个一组翻转链表 技巧: 画图观察指针指向;添加虚拟头节点;可以多定义几个节点;快慢双指针; 常见操作: 定义new head逆序时,头插 ListNode*…

带你深入浅出设计模式:八、适配器模式:代码世界中的万能转换器

此为设计模式第八谈! 用总-分-总的结构和生活化的例子给你讲解设计模式! 码农不易,各位学者学到东西请点赞收藏支持支持! 开始部分: 总:适配器模式主要解决的问题是已有类的接口与所需的接口不匹配的问题…

[Python学习日记-38] Python 中的函数的名称空间

[Python学习日记-38] Python 中的函数的名称空间 简介 名称空间 作用域查找顺序 简介 在前面学习函数的时候我们发现,函数内部也有一个内存空间是用于存储函数自己的一些变量的,及时这个变量名与外部的变量名一样是也没关系,Python 会优先…

CGLib动态代理和JDK动态代理Demo、ASM技术尝鲜

本文主要介绍CGLib和JDK动态代理的使用,不对源码进行深入分析。代码可直接复制使用。 类型 机制 回调方式 适用场景 效率 JDK动态代理 委托机制。代理类和目标类都实现了同样的接口。InvocationHandler持有目标类。代理类委托InvocationHandler去调用目标类原…

令牌主动失效机制范例(利用redis)注释分析

介绍该机制 令牌生成 在需要限流的场景中,系统会根据一定的速率生成令牌,存储在 Redis 中。可以设定每秒生成的令牌数量。 令牌获取 当用户请求时,系统会从 Redis 中获取令牌。可以使用原子性操作(如 DECR)来确保令牌…