大家好,在之前的一期中分享了在matlab中进行可视化绘图。这一期将重点介绍python绘图。我将用三期把python绘图讲明白、讲透。python之所以强大就在于它有非常丰富的包可以供调用。今天我们重点介绍的是两个包:matplotlib及numpy。其中matplotlib负责绘图,numpy负责数学运算。python语言的一个显著特点是包必须导入才能运用。最适配Python的开发环境是Pycharm,在Pycharm中你可以创建一个后缀为.*py,一个后缀为.*py的文件称为一个模块,module. 若干个模块加上一个命名为__init__.py的模块就构成了一个包,package。比如有一个叫做numpy的包,你可以导入:表示将numpy导入为np,这个时候加入你需要一个变量pi,则用np.pi即可,如果是需要一个函数sin,则是np.sin()。from matplotlib import pyplot as plt.
import matplotlib.pyplot as plt.
表示从matplotlib这个包中导入一个名叫pyplot的package并且命名为plt.这一句是matplotlib绘图的基础。加入在相同的文件夹中有一个名叫A.py的文件,可以通过如下语句将其中的函数全部导入过来:什么是后端?如果说前端是用户编写的绘图代码,后端则负责将这些代码转换为可以看到的图像或者非交互窗口。matplotlib的后端分为两类:- 交互式后端:用于在屏幕上显示图形窗口,支持缩放、平移等操作。比如“QtAgg”, "TkAgg", "macOSX"等
- 非交互后端:用于将图形保存为文件,如PNG、PDF、SVG等。
import matplotlibmatplotlib.use('QtAgg')import matplotlib.pyplotas plt
# mystyle.mplstylelines.linewidth:2.5lines.color:redfigure.figsize=10,6
plt.style.use('/path/to/your/mystyle.mplstyle')
plt.style.use(["dark_background","presentation"])
with plt.style.context('ggplot') plt.plt(data) plt.show()# 在这个代码内部将使用“ggplot”这个样式
可以通过rcParams实现全局字体设置。font.family设置字体的基本类别,比如“serif”衬线体、“sans-serif”无衬线体、“monospace”等宽体font.sans-serif 字体列表,依次查找到可用的位置。plt.rcParams["font.family"]="sans-serif"plt.rcParams["font.sans-serif"]=["Arial","DejaVu Sans","Verdana"]plt.rcParams["axes.unicode_minus"] = False#解决符号显示为方块的问题
plt.rcParams["figure.figsize"] =(10,6)plt.rcParams["lines.linewidth"] = 2plt.rcParams["font.size"] = 12
在空间中创建一个画布可以使用plt.figure,此时会创建一个fig对象和一个ax对象。或者可以使用fig,ax=plt.subplots()创建多个子图,ax[0],ax[1],...ax[n]表示对应的坐标轴。如果需要在一个坐标区ax处添加绘图,可以这样:ax.plot.可以通过一些方法来修改坐标轴的标题、坐标范围等属性。和Matlab不同,在python中绘图后并不会立刻显示,而是要通过plt.show()方法后再显示,如果你添加了多个figure,并且把plt.show()方法放在所有后面,那么这些图窗会一次性显示。如果你将plt.show()添加到每个figure的绘图语句后面,因为阻塞的缘故,只有当前一个figure被手动关闭,后一个figure才会显示。以上简单介绍了matplotlib的一些用法,即在使用前先要导入,通过plt后面的绘图方法进行绘图,需要使用plt.show()方法进行显示。可以通过rcParams设定图片的风格,字体、字号之类的。这期的内容是matplotlib绘图的入门,下一期是matplotlib绘图进阶篇,将通过折线图、填充图、二维伪彩色图、三维表面图的例子来具体展示。