之前学习了一些python的基础编程,今天我们学习如何使用python来绘图。
注:我发表的Python编程都是基于Jupyter Notebook 实现的。
matplotlib提供了名为pylab的模块,其中包括了许多numpy和pyplot中常用的函数。用于快速交互式使用。
我们以一个简单的例子来说明:
import scipy as sp#科学计算
import pylab as pl#画图
x=sp.linspace(0.4*sp.pi,10)# linspace()通过指定开始值、终值和元素个数创建表示等差数列的一维数组,可以通过endpoint参数指定是否包含终值,默认值为True,即包含终值。
pl.plot(x,sp.sin(x))#画一个正弦图
pl.show()#显示图
matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地 进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。
linspace()通过指定开始值、终值和元素个数创建表示等差数列的一维数组,可以通过endpoint参数指定是否包含终值,默认值为True,即包含终值。
plot函数的调用方式很灵活,第一句将x,y数组传递给plot之后,用关键字参数指定各种属性:
• label : 给所绘制的曲线一个名字,此名字在图示(legend)中显示。只要在字符串前后添加’’$’'符 号,matplotlib就会使用其内嵌的latex引擎绘制的数学公式。
• color : 指定曲线的颜色
• linewidth : 指定曲线的宽度
• xlabel : 设置X轴的文字
• ylabel : 设置Y轴的文字
• title : 设置图表的标题
• ylim : 设置Y轴的范围
• legend : 显示图示
最后调用plt.show()显示出我们创建的所有绘图对象。
import numpy as np
import matplotlib.pyplot as plt#导入快速绘图函数库
import scipy as sp
x = np.linspace(0.,10,1000)
y = np.sin(x)
z = np.cos(x**2)
plt.figure(figsize = (8,4))#设置figure的尺寸
plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)#设置格式
plt.plot(x,z,"b--",label="$cos(x^2)$")#设置格式
plt.xlabel("Time(s)")#x轴名称
plt.ylabel("Volt")#y轴名称
plt.title("pyplot First Example")#设置图的名称
plt.ylim(-1.2,1.2)
plt.legend()#给图加上图例
plt.show()
matplotlib所绘制的图的每个组成部分都对应有一个对象,我们可以通过调用这些对象的属 性设置方法set_*或者pyplot的属性设置函数setp设置其属性值。例如plot函数返回一个 matplotlib.lines.Line2D 对象的列表,下面的例子显示如何设置Line2D对象的属性:
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(0,5,0.1)
line, =plt.plot(x,x*x)#plot返回一个列表,通过line,获取其第一个元素
#调用Line2D对象的set_*方法设置属性值
line.set_antialiased(False)
#同时绘制sin和cos两条曲线,lines是一个有两个Line2D对象的列表
lines = plt.plot(x,np.sin(x),x,np.cos(x))#
#调用setp函数同时配置多个Line2D对象的多个属性值
plt.setp(lines,color="r",linewidth=2.0)
注意: getp函数只能对一个对象进行操作,它有两种用法:
• 指定属性名:返回对象的指定属性的值
• 不指定属性名:打印出对象的所有属性和其值
matplotlib的整个图表为一个Figure对象,此对象在调用plt.figure函数时返回,我们也可以通过 plt.gcf函数获取当前的绘图对象:
f=plt.gcf()
plt.getp(f)
一个绘图对象(figure)可以包含多个轴(axis),在Matplotlib中用轴表示一个绘图区域,可以将其理解 为子图。上面的第一个例子中,绘图对象只包括一个轴,因此只显示了一个轴(子图)。我们可以使用 subplot函数快速绘制有多个轴的图表。subplot函数的调用形式如下:
subplot(numRows, numCols, plotNum)#与MATLAB中作图一样
subplot将整个绘图区域等分为numRows行 * numCols列个子区域,然后按照从左到右,从上到下 的顺序对每个子区域进行编号,左上的子区域的编号为1。如果numRows,numCols和plotNum这 三个数都小于10的话,可以把它们缩写为一个整数,例如subplot(323)和subplot(3,2,3)是相同的。 subplot在plotNum指定的区域中创建一个轴对象。如果新创建的轴和之前创建的轴重叠的话,之前的轴将被删除。
for idx,color in enumerate("rgbyck"):
plt.subplot(320+idx+1,axisbg=color)#生成三行两列的图,运用axisbg设置颜色
plt.show()
#结果
可通过设置subplot()中的三个参数值来设置图表的位置:
plt.subplot(221) # 第一行的左图
plt.subplot(222) # 第一行的右图
plt.subplot(212) # 第二整行
plt.show()
参考博客:https://blog.csdn.net/weixin_41950276/article/details/84259546
参考博客:https://blog.csdn.net/github_36669230/article/details/78172145
参考书籍:《scipydoc用Python做科学计算》