Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Python可视化库Matplotlib绘图入门详解

Python可视化库Matplotlib绘图入门详解

作者头像
用户6543014
发布于 2020-03-26 07:46:43
发布于 2020-03-26 07:46:43
5.4K00
代码可运行
举报
文章被收录于专栏:CU技术社区CU技术社区
运行总次数:0
代码可运行

matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图。其中,matplotlib的pyplot模块一般是最常用的,可以方便用户快速绘制二维图表。可视化有助于更好地分析数据并增强用户的决策能力。在此matplotlib教程中,我们将绘制一些图形并更改一些属性,例如字体、标签、范围等。

首先,我们将安装matplotlib,然后开始绘制一些基本的图形。在此之前,让我们看一下matplotlib可以绘制的一些图。

Plot Types

matplotlib中有许多不同的Plot Types。本节简要说明了matplotlib中的某些Plot Types。

Line Plot

Line Plot是图形中的简单2D线。

Contouring 和Pseudocolor

通过使用函数pcolormesh(),即使尺寸分布不均匀,我们也可以用颜色表示二维数组。同样,contour()函数执行相同的工作。

直方图

为了以直方图的形式返回bin计数和概率,我们使用了hist()函数。

要在Matplotlib中添加任意路径,我们使用matplotlib.path模块。

流量图

我们可以使用streamplot()函数绘制矢量的流线。我们还可以映射不同参数的颜色和宽度,例如速度、时间等。

条形图

我们可以使用bar()函数制作具有很多自定义功能的条形图。

其他种类Matplotlib中的其他一些绘图示例包括:

  • Ellipses
  • Pie Charts
  • Tables
  • Scatter Plots
  • GUI widgets
  • Filled curves
  • Date handling
  • Log plots
  • Legends
  • TeX- Notations for text objects
  • Native TeX rendering
  • EEG GUI
  • XKCD-style sketch plots

安装

假设在环境变量中设置了Python的路径,则只需使用pip命令安装matplotlib软件包即可上手。

使用以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ pip安装matplotlib

在我的系统中,该软件包已经安装。如果该软件包还没安装就会自动下载安装。

要将包导入到您的Python文件中,可以使用以下语句:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
导入matplotlib.pyplot作为plt

‍其中matplotlib是库,pyplot是一个软件包,包括所有要在Python中使用MATLAB函数的MATLAB函数。

最后,我们可以使用plt调用python文件中的函数。

垂线

要使用pyplot绘制垂直线,可以使用axvline()函数。

axvline的语法如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
plt.axvline(x = 0,ymin = 0,ymax = 1** kwargs)

用这种语法:x是x轴的坐标。这是从垂直方向生成线的位置。ymin是plot的底部,ymax是plot的顶部。** kwarg是线条的属性,例如颜色、标签,线条样式等。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
导入matplotlib.pyplot作为plt
plt.axvline(0.201,label ='pyplot垂直线')
plt.legend()
plt.show()

在此示例中,我们绘制一条垂直线。0.2表示将在图形的点0.2处绘制该线,0和1分别是ymin和ymax,标记行属性之一。legend()是实现绘图的MATLAB函数,可在图上启用标签。最后,show()将打开plot或graph屏幕。

水平线

axhline()绘制一条水平线的语法如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
plt.axhline(y = 0,xmin = 0,xmax = 1** kwargs)

在语法中:y是沿y轴的坐标。这些点是水平生成直线的位置。xmin表示图的左侧,xmax是图的右侧。** kwarg是线条的属性,例如颜色、标签、线条样式等。

在上一个示例中,用axhline()替换axvline(), 就会在绘图上得到一条水平线:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
导入matplotlib.pyplot作为plt

积分= 0.2

plt.axhline(ypoints,01,label ='pyplot水平线')

plt.legend()

plt.show()

多行

要绘制多条垂直线,我们可以创建一个x点/坐标的数组,然后遍历该数组的每个元素以绘制多条线:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
导入matplotlib.pyplot作为plt

xpoints = [0.20.40.6]

对于xpoints中的p:

    plt.axvline(p,label ='pyplot垂直线')

plt.legend()

plt.show()

输出将是:

上面的输出看起来并不吸引人,我们也可以为图中的每行使用不同的颜色。

看下面的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
导入matplotlib.pyplot作为plt

xpoints = [0.20.40.6]

颜色= ['g''c''m']

对于zip中的p,c(xpoints,颜色):

    plt.axvline(p,label ='line:{}'。format(p),c = c)

plt.legend()

plt.show()

在此示例中,我们有一个线数组和一个Python颜色符号数组。使用zip()函数,两个数组合并在一起:xpoints []的第一个元素与color []数组的第一个元素。比如,第一行=绿色,第二行=青色,依此类推。

花括号{}充当占位符,借助format()函数将Python变量添加到输出中。因此,会在图中看到xpoints []。

上面代码的输出:

只需在上一个示例中将axvline()替换为axhline(),绘图中就会出现多条水平线:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
导入matplotlib.pyplot作为plt

ypoints = [0.20.40.60.68]

颜色= ['b''k''y''m']

用于zip中的p,c(点,颜色):

    plt.axhline(p,label ='line:{}'。format(p),c = c)

plt.legend()

plt.show()

代码是相同的,这次我们有一个由y轴的四个点组成的数组,并且颜色不同。这两个数组都使用zip()函数合并在一起,遍历最终数组,并且用axhline()绘制线,如下面的输出所示:

保存图形

绘制图形后,如何保存输出图形?

要保存请使用pyplot的savefig()。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
plt.savefig(fname,** kwargs)

其中,fname是文件名,目标或路径也可以与文件名一起指定。kwargs参数是可选的。用于更改方向、格式、表面颜色、质量、dpi等。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
导入matplotlib.pyplot作为plt

ypoints = [0.20.40.60.68]

颜色= ['b''k''y''m']

用于zip中的p,c(点,颜色):

    plt.axhline(p,label ='line:{}'。format(p),c = c)

plt.savefig('horizontal_lines.png')

plt.legend()

plt.show()

该文件的名称为horizontal_lines.png,该文件保存在您的python文件存储位置:

多个plot

前面的所有示例都是关于在一个图中进行绘制。在同一图中绘制多个图怎么办?

您可以借助Python pyplot的subplot()函数在同一图中生成多个图。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
matplotlib.pyplot.subplot(nrows,ncols,index,** kwargs)

在参数中,我们需要指定三个整数,分别是行和列中的绘图数,然后制定图的索引位置。您可以将其视为一个网格,我们正在绘制其单元格。

第一个数字是nrows行数,第二个数字是ncols列数,然后是索引。其他可选参数(** kwargs)包括颜色、标签、标题、快照等。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
从matplotlib导入pyplot作为plt

plt.subplot(121)

x1 = [102030405060708090100]

y1 = [5101520253035404550]

plt.plot(x1,y1,color =“ c”)




plt.subplot(122)

x2 = [405060708090100]

y2 = [405060708090100]

plt.plot(x2,y2,color =“ m”)

plt.show()

思考以下代码,以更好地理解如何在一个图中绘制多个图形。首先是定义plot的位置。在第一个子图中,1,2,1表示我们有1行2列,当前图将在索引1处绘制。类似地,1,2,2告诉我们有1行2列,但是这将图的时间定为索引2。

下一步是创建数组以在图中绘制整数点。查看以下输出:

这就是绘制垂直子图的方式。要绘制水平图,请将子图的行和列值更改为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
plt.subplot(211)

plt.subplot(212

这意味着我们有2行1列。输出将如下所示:

现在,让我们创建一个2×2的网格图。

可以使用下面的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
从matplotlib导入pyplot作为plt

plt.subplot(221)

x1 = [405060708090100]

y1 = [405060708090100]

plt.plot(x1,y1,color =“ c”)




plt.subplot(222)

x2 = [405060708090100]

x2 = [405060708090100]

plt.plot(x2,y2,color =“ m”)




plt.subplot(223)

x3 = [405060708090100]

y3 = [405060708090100]

plt.plot(x3,y3,color =“ g”)




plt.subplot(224)

x4 = [405060708090100]

y4 = [405060708090100]

plt.plot(x4,y4,color =“ r”)

plt.show()

输出将是:

在此示例中,2,2,1表示2行2列,会在索引1处进行绘制。类似地,2,2,2表示2行2列,索引会在2处绘制。

字体大小

我们可以借助一个名为rc()的函数来更改绘图的字体大小。rc()函数用于自定义rc设置。要使用rc()更改字体大小,可以使用以下语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
matplotlib.pyplot.rc('fontname'** font)

或者

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
matplotlib.pyplot.rc('font',size = sizeInt

上面语法中的字体是用户定义的词典,用于指定文本的权重、字体系列、字体大小等。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
plt.rc('font',size = 30

这会将字体更改为30,输出将是:

轴范围

可以分别使用pyplot的xlim()和ylim()函数来设置x和y轴的范围或限制。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
matplotlib.pyplot.xlim([开始点,结束点])

matplotlib.pyplot.ylim([开始点,结束点]

考虑下面的示例来设置图的x轴限制:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
从matplotlib导入pyplot作为plt

x1 = [405060708090100]

y1 = [405060708090100]

plt.plot(x1,y1)

plt.xlim([0,160])

plt.show()

在此示例中,x轴上的点将从0到160开始,如下所示:

同样,要限制y轴坐标,可以用下面这个代码行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
plt.ylim([0,160]

输出将是:

标签轴

可以使用pyplot的xlabel()和ylabel()函数创建x和y轴的标签。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
matplotlib.pyplot.xlabel(labeltext,labelfontdict,** kwargs)

matplotlib.pyplot.ylabel(labeltext,labelfontdict,** kwargs)

在上述语法中,labeltext是标签的文本,是一个字符串,labelfont描述了标签文本的字体大小、粗细、字体类型。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
从matplotlib导入pyplot作为plt

x1 = [405060708090100]

y1 = [405060708090100]

plt.plot(x1,y1)

plt.xlabel('像极客X轴')

plt.ylabel('Like Geeks Y Axis')

plt.show()

在上面的示例中,对于x和y坐标,我们分别有常规的x和y数组。然后plt.xlabel()为x轴生成一个文本,而plt.ylabel()为y轴生成一个文本。

清除plot

pyplot的clf()函数清除了绘图。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
matplotlib.pyplot.clf()

在clf()函数中,没有任何参数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
从matplotlib导入pyplot作为plt

x1 = [405060708090100]

y1 = [405060708090100]

plt.plot(x1,y1)

plt.xlabel('像极客X轴')

plt.ylabel('Like Geeks Y Axis')

plt.clf()

plt.show()

在此代码中,我们创建了一个图并定义了标签。之后,我们使用clf()函数按如下所示清除plot:

希望这个教程对您有用

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SACC开源架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
给量子计算装上AI大脑!谷歌量子计算库TensorFlow Quantum开源,超强算力可兼容TensorFlow
据谷歌人工智能博客称,新的量子电路模拟器和量子计算模型可以跟标准的 Keras 函数、现有的 TensorFlow API 无缝兼容,因此创建量子模型成为可能。
新智元
2020/03/12
8780
给量子计算装上AI大脑!谷歌量子计算库TensorFlow Quantum开源,超强算力可兼容TensorFlow
谷歌实现量子霸权论文曝光,圈内人士:量子计算的里程碑事件
9 月 20 日,据《财富》、《金融时报》等多家外媒报道,谷歌已经利用一台 53 量子比特的量子计算机实现了传统架构计算机无法完成的任务,即在世界第一超算需要计算 1 万年的实验中,谷歌的量子计算机只用了 3 分 20 秒。
机器之心
2019/09/24
5250
谷歌实现量子霸权论文曝光,圈内人士:量子计算的里程碑事件
中科院计算所孙晓明:实现多项式量级加速,量子搜索算法的优势与挑战
机器之心报道 机器之心编辑部 4 月 20 日,在机器之心「量子计算」线上圆桌活动中,机器之心邀请到了中科院计算所研究员、量子计算实验室主任孙晓明。他的演讲主题为《量子搜索算法与线路优化》,报告简要回
机器之心
2022/05/16
4400
中科院计算所孙晓明:实现多项式量级加速,量子搜索算法的优势与挑战
下(应用篇)| 推荐几款较流行的量子算法
量子算法是量子计算机的必要软件支撑,同时量子算法的研究也是推动量子计算发展的强大动力。以下将对各个发展阶段的典型量子算法进行比较分析。
量子发烧友
2023/02/24
2.1K0
下(应用篇)| 推荐几款较流行的量子算法
谷歌的量子霸权论文,量子计算的里程碑
量子计算机用3分20秒完成的一项计算,全球最强大的超算Summit要花1万年。这个成果,来自于谷歌发表在NASA官网上的最新量子计算研究。这意味着谷歌的量子霸权,或许真的实现了?
AiTechYun
2019/09/25
8400
谷歌的量子霸权论文,量子计算的里程碑
【学术】量子算法与计算机对抗,胜者究竟是谁?
我们对“量子霸权(quantum supremacy)”的追求证明了量子计算机比普通计算机能够更快地做一些事情,但是,却自相矛盾地导致了准量子典型算法的繁荣。 假设你有一个神秘的盒子,它接受了两种可能的输入——你可以按下红色的按钮或蓝色的按钮——然后得到两种可能的输出一——红球或蓝球。不管你按哪个颜色的按钮,如果盒子从头至尾总是归还一种颜色的球,那么它都是常数; 如果球的颜色随着按钮的颜色而变化,那么它是平衡的。你的任务是通过让盒子是只执行一次操作,就判断出你能得到哪一种类型的盒子。 乍一看,这项任务似乎毫
AiTechYun
2018/03/02
7560
【学术】量子算法与计算机对抗,胜者究竟是谁?
Nature Computational Science | 量子计算生物学的实际应用
生物学的许多领域,都涉及到解决复杂的计算问题,如模拟化学反应、基因组组装、药物发现、蛋白质折叠等。尽管计算生物学领域取得了巨大的进步,但许多现实生活中的问题,仍然具有挑战性,因为它们需要大量的计算资源,超出了现有设备的能力。然而,这为开发一个基于完全不同的原理,即量子物理定律的计算设备,提供了机会。例如,在量子物理学中,一个物体可能同时处于多种状态,这种现象被称为量子叠加。在计算的语言中,量子叠加意味着比特(在这种情况下,称为量子比特或量子位)可以同时是0和1,这种“并行”的计算过程。描述N个量子位元的量子状态,通常需要大量的信息,按指数尺度按2N扩展。在如此大的计算空间中操纵概率振幅的艺术是开发量子算法的核心,人们希望量子算法在解决许多不同的任务时提供显著优势。
DrugScience
2021/03/22
1.7K0
Nature Computational Science | 量子计算生物学的实际应用
谷歌量子计算登上Nature封面,首次实现量子优越性,里程碑式突破
它或许标志着量子计算正在走向实用化:谷歌已经利用一台 54 量子比特的量子计算机实现了传统架构计算机无法完成的任务。在世界第一超算需要计算 1 万年的实验中,量子计算机只用了 3 分 20 秒。
机器之心
2019/10/24
4440
谷歌72位量子计算机面世,比特币还安全吗?
在今年于洛杉矶举办的美国物理学会年会上,谷歌放了一个大招,发布全球首个 72 位量子比特通用的量子计算机 Bristlecon,实现 1% 的低错误率,与谷歌之前涉及的 9 量子比特通用的量子计算机持
FB客服
2018/03/22
7580
谷歌72位量子计算机面世,比特币还安全吗?
学界 | 南科大翁文康:「量子霸权」的基础概念和可行方案
论文:Quantum supremacy: some fundamental concepts
机器之心
2018/07/30
8570
学界 | 南科大翁文康:「量子霸权」的基础概念和可行方案
新的计算时代已来?这场圆桌对话,让我们畅想量子计算的未来
近年来,量子计算领域取得了一系列新的突破,从谷歌用54量子比特量子处理器 Sycamore 首次实现量子优越性、IBM 推出全球首个127量子比特处理器,到国内中科大潘建伟团队等构建的量子计算原型机「九章」、「九章二号」、「祖冲之号」、「祖冲之二号」…… 随着成果不断涌出,量子计算在科技领域也越来越受关注。这是否预示着我们正在进入一个新的计算时代? 北京时间4月20日19:00—21:00,博文视点联合机器之心特别策划了「量子计算」线上圆桌,邀请到三位量子计算领域的大咖嘉宾,通过技术分享的形式为大家提供
博文视点Broadview
2022/04/19
3320
新的计算时代已来?这场圆桌对话,让我们畅想量子计算的未来
量子+AI:量子计算加速机器学习
量子计算和机器学习都是当前最炙手可热的研究领域。在量子计算方面,理论和硬件的一个个突破性进展让人们看到大规模通用量子计算机的脚步越来越近。在机器学习方面,具备机器学习能力的人工智能在某些方面的能力远超人类。
量子发烧友
2023/02/24
1.3K0
量子+AI:量子计算加速机器学习
(行业突破)IBM Quantum突破100量子位量子计算芯片壁垒
本周,IBM发布了一款名为“鹰”(Eagle)的127量子位量子计算芯片,在打造最强大量子计算机的竞赛中展示了一项新资产。
从大数据到人工智能
2022/01/19
5480
量子计算及量子计算的模拟
IT是一个繁荣的行业,寄托着无数人的梦想,充斥着无数的造梦神话。 IT是一个悲催的行业,层出不穷的新概念让人应接不暇,几乎只要有一天不学习,都可能让你寝食不安。 量子计算机是一个炒的比较热的概念,目前还处于上升期,感觉上已经到了爆发的边缘,似乎随时可以呼之欲出。 通常对于量子计算机的理解就是,因为量子计算机的存储特征,可以处理很大的数据,而不是像传统计算机那样只是处理1、0二进制数,因此计算效率更高。从而有可能颠覆现有的计算机架构,甚至现有的所有的加密算法,因为新的、高速的量子计算机的出现,都将因为
俺踏月色而来
2018/06/20
1.4K0
量子计算与人工智能
量子计算是一种遵循量子力学规律调控量子信息单元进行计算的新型计算模式,它的处理效率要大大快于传统的通用计算机。那么什么是人工智能,人工智能的发展历程,以及人工智能如何跟量子计算的结合和应用。本篇文章就为大家做个简单分享。
量子发烧友
2023/02/24
9810
量子计算与人工智能
量子近似优化算法及其应用
量子近似优化算法(QAOA)是一种经典和量子的混合算法,是一种在基于门的量子计算机上求解组合优化问题的变分方法。一般而言,组合优化的任务就是从有限的对象中寻找使成本最小化的目标对象,在实际生活中的主要应用包括降低供应链成本、车辆路径、作业分配等。
量子发烧友
2023/03/08
1.3K0
量子近似优化算法及其应用
量子算法与实践——Grover算法
量子计算机的算力可体现为量子计算机可实现并行计算, Grover算法(Quantum Search Algorithm)是量子计算领域的主要算法之一。Grover算法是由Grover于1996年提出的平方根加速的随机数据库量子搜索算法,旨在利用量子计算机进行比经典计算机更快的数据搜索。在数据库足够混乱且没有具体的数据结构限定的条件下,Grover算法可以快速解决从N个未分类的客体中寻找出某个特定个体的问题。除搜索时间远短于经典计算外,其强大之处还在于Grover算法的公式可适用于很多问题,比如:密码学、矩阵和图形问题、优化以及量子机器学习等。本文将从Grover算法的实现原理、应用与实践等方面介绍Grover算法。
薛大叔的量子猫
2022/11/07
4.6K0
推荐阅读
相关推荐
给量子计算装上AI大脑!谷歌量子计算库TensorFlow Quantum开源,超强算力可兼容TensorFlow
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验