matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图。其中,matplotlib的pyplot模块一般是最常用的,可以方便用户快速绘制二维图表。可视化有助于更好地分析数据并增强用户的决策能力。在此matplotlib教程中,我们将绘制一些图形并更改一些属性,例如字体、标签、范围等。
首先,我们将安装matplotlib,然后开始绘制一些基本的图形。在此之前,让我们看一下matplotlib可以绘制的一些图。
Plot Types
matplotlib中有许多不同的Plot Types。本节简要说明了matplotlib中的某些Plot Types。
Line Plot
Line Plot是图形中的简单2D线。
Contouring 和Pseudocolor
直方图
为了以直方图的形式返回bin计数和概率,我们使用了hist()函数。
要在Matplotlib中添加任意路径,我们使用matplotlib.path模块。
流量图
我们可以使用streamplot()函数绘制矢量的流线。我们还可以映射不同参数的颜色和宽度,例如速度、时间等。
条形图
我们可以使用bar()函数制作具有很多自定义功能的条形图。
其他种类Matplotlib中的其他一些绘图示例包括:
安装
假设在环境变量中设置了Python的路径,则只需使用pip命令安装matplotlib软件包即可上手。
使用以下命令:
$ pip安装matplotlib
在我的系统中,该软件包已经安装。如果该软件包还没安装就会自动下载安装。
要将包导入到您的Python文件中,可以使用以下语句:
导入matplotlib.pyplot作为plt
其中matplotlib是库,pyplot是一个软件包,包括所有要在Python中使用MATLAB函数的MATLAB函数。
最后,我们可以使用plt调用python文件中的函数。
垂线
要使用pyplot绘制垂直线,可以使用axvline()函数。
axvline的语法如下:
plt.axvline(x = 0,ymin = 0,ymax = 1,** kwargs)
用这种语法:x是x轴的坐标。这是从垂直方向生成线的位置。ymin是plot的底部,ymax是plot的顶部。** kwarg是线条的属性,例如颜色、标签,线条样式等。
导入matplotlib.pyplot作为plt
plt.axvline(0.2,0,1,label ='pyplot垂直线')
plt.legend()
plt.show()
在此示例中,我们绘制一条垂直线。0.2表示将在图形的点0.2处绘制该线,0和1分别是ymin和ymax,标记行属性之一。legend()是实现绘图的MATLAB函数,可在图上启用标签。最后,show()将打开plot或graph屏幕。
水平线
axhline()绘制一条水平线的语法如下:
plt.axhline(y = 0,xmin = 0,xmax = 1,** kwargs)
在语法中:y是沿y轴的坐标。这些点是水平生成直线的位置。xmin表示图的左侧,xmax是图的右侧。** kwarg是线条的属性,例如颜色、标签、线条样式等。
在上一个示例中,用axhline()替换axvline(), 就会在绘图上得到一条水平线:
导入matplotlib.pyplot作为plt
积分= 0.2
plt.axhline(ypoints,0,1,label ='pyplot水平线')
plt.legend()
plt.show()
多行
要绘制多条垂直线,我们可以创建一个x点/坐标的数组,然后遍历该数组的每个元素以绘制多条线:
导入matplotlib.pyplot作为plt
xpoints = [0.2,0.4,0.6]
对于xpoints中的p:
plt.axvline(p,label ='pyplot垂直线')
plt.legend()
plt.show()
输出将是:
上面的输出看起来并不吸引人,我们也可以为图中的每行使用不同的颜色。
看下面的示例:
导入matplotlib.pyplot作为plt
xpoints = [0.2,0.4,0.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(),绘图中就会出现多条水平线:
导入matplotlib.pyplot作为plt
ypoints = [0.2,0.4,0.6,0.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()。
plt.savefig(fname,** kwargs)
其中,fname是文件名,目标或路径也可以与文件名一起指定。kwargs参数是可选的。用于更改方向、格式、表面颜色、质量、dpi等。
导入matplotlib.pyplot作为plt
ypoints = [0.2,0.4,0.6,0.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()函数在同一图中生成多个图。
matplotlib.pyplot.subplot(nrows,ncols,index,** kwargs)
在参数中,我们需要指定三个整数,分别是行和列中的绘图数,然后制定图的索引位置。您可以将其视为一个网格,我们正在绘制其单元格。
第一个数字是nrows行数,第二个数字是ncols列数,然后是索引。其他可选参数(** kwargs)包括颜色、标签、标题、快照等。
从matplotlib导入pyplot作为plt
plt.subplot(1、2、1)
x1 = [10,20,30,40,50,60,70,80,90,100]
y1 = [5、10、15、20、25、30、35、40、45、50]
plt.plot(x1,y1,color =“ c”)
plt.subplot(1、2、2)
x2 = [40,50,60,70,80,90,100]
y2 = [40,50,60,70,80,90,100]
plt.plot(x2,y2,color =“ m”)
plt.show()
思考以下代码,以更好地理解如何在一个图中绘制多个图形。首先是定义plot的位置。在第一个子图中,1,2,1表示我们有1行2列,当前图将在索引1处绘制。类似地,1,2,2告诉我们有1行2列,但是这将图的时间定为索引2。
下一步是创建数组以在图中绘制整数点。查看以下输出:
这就是绘制垂直子图的方式。要绘制水平图,请将子图的行和列值更改为:
plt.subplot(2,1,1)
plt.subplot(2,1,2)
这意味着我们有2行1列。输出将如下所示:
现在,让我们创建一个2×2的网格图。
可以使用下面的代码:
从matplotlib导入pyplot作为plt
plt.subplot(2,2,1)
x1 = [40,50,60,70,80,90,100]
y1 = [40,50,60,70,80,90,100]
plt.plot(x1,y1,color =“ c”)
plt.subplot(2,2,2)
x2 = [40,50,60,70,80,90,100]
x2 = [40,50,60,70,80,90,100]
plt.plot(x2,y2,color =“ m”)
plt.subplot(2,2,3)
x3 = [40,50,60,70,80,90,100]
y3 = [40,50,60,70,80,90,100]
plt.plot(x3,y3,color =“ g”)
plt.subplot(2,2,4)
x4 = [40,50,60,70,80,90,100]
y4 = [40,50,60,70,80,90,100]
plt.plot(x4,y4,color =“ r”)
plt.show()
输出将是:
在此示例中,2,2,1表示2行2列,会在索引1处进行绘制。类似地,2,2,2表示2行2列,索引会在2处绘制。
字体大小
我们可以借助一个名为rc()的函数来更改绘图的字体大小。rc()函数用于自定义rc设置。要使用rc()更改字体大小,可以使用以下语法:
matplotlib.pyplot.rc('fontname',** font)
或者
matplotlib.pyplot.rc('font',size = sizeInt
上面语法中的字体是用户定义的词典,用于指定文本的权重、字体系列、字体大小等。
plt.rc('font',size = 30)
这会将字体更改为30,输出将是:
轴范围
可以分别使用pyplot的xlim()和ylim()函数来设置x和y轴的范围或限制。
matplotlib.pyplot.xlim([开始点,结束点])
matplotlib.pyplot.ylim([开始点,结束点])
考虑下面的示例来设置图的x轴限制:
从matplotlib导入pyplot作为plt
x1 = [40,50,60,70,80,90,100]
y1 = [40,50,60,70,80,90,100]
plt.plot(x1,y1)
plt.xlim([0,160])
plt.show()
在此示例中,x轴上的点将从0到160开始,如下所示:
同样,要限制y轴坐标,可以用下面这个代码行:
plt.ylim([0,160])
输出将是:
标签轴
可以使用pyplot的xlabel()和ylabel()函数创建x和y轴的标签。
matplotlib.pyplot.xlabel(labeltext,labelfontdict,** kwargs)
matplotlib.pyplot.ylabel(labeltext,labelfontdict,** kwargs)
在上述语法中,labeltext是标签的文本,是一个字符串,labelfont描述了标签文本的字体大小、粗细、字体类型。
从matplotlib导入pyplot作为plt
x1 = [40,50,60,70,80,90,100]
y1 = [40,50,60,70,80,90,100]
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()函数清除了绘图。
matplotlib.pyplot.clf()
在clf()函数中,没有任何参数。
从matplotlib导入pyplot作为plt
x1 = [40,50,60,70,80,90,100]
y1 = [40,50,60,70,80,90,100]
plt.plot(x1,y1)
plt.xlabel('像极客X轴')
plt.ylabel('Like Geeks Y Axis')
plt.clf()
plt.show()
在此代码中,我们创建了一个图并定义了标签。之后,我们使用clf()函数按如下所示清除plot:
希望这个教程对您有用
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有