python|Python日记(3)——matplotlib基础入门(1)

Python日记(3)——matplotlib基础入门(1) 每天做一个Python小练习,顺便记录一些小技巧。
由于化工实验数据处理需要把数据转换成图标,所以要逐步学习Python里比较好用的matplotlib库,加下来就是从0基础开始学习的过程。
(1)简明matplotlib
在使用matplotlib库之前,先添加进该库和另一个常用的库Numpy。
在Pycharm下有个Python Packages方便我们下载需要的库,示意图如下:
python|Python日记(3)——matplotlib基础入门(1)
文章图片

添加好需要的两个库之后,就可以导入使用了。

import matplotlib.pyplot as plt import numpy as np

【python|Python日记(3)——matplotlib基础入门(1)】这里导入的时候,使用了简化名,为了方便以后使用。
接下来,就可以尝试生成一个简单的图形。
import matplotlib.pyplot as plt import numpy as npdata = https://www.it610.com/article/np.arange(10) plt.plot(data)plt.show()

创建好实例后,务必在最后写上show(),才能展示你所要创建的图片。
就会得到以下的图形:
python|Python日记(3)——matplotlib基础入门(1)
文章图片

(2)图板与子图
绘图前,得先准备好一个图板或者画布,才能把自己需要的图绘画出来,所以我们的可以使用figure()函数,创建并定义出一个我们需要用到的图板。
fig = plt.figure()

创建出来的图板还只是一个空图板,并没有我们可以用的上的工作区,所以还需要使用add_subplot()创建一个或多个子图(subplot)
ax1 = fig.add_subplot(2, 2, 1) ax2 = fig.add_subplot(2, 2, 2) ax3 = fig.add_subplot(2, 2, 3)

上面代码的意思时,该图片一个是2*2的工作区里的第n个,最多只能创建四个。
得到图片如下:
python|Python日记(3)——matplotlib基础入门(1)
文章图片

ps:更为方便的用法如下:
fig, axes = plt.subplots(nrows=2, ncols=2) axes[0,0].set(title='Upper Left') axes[0,1].set(title='Upper Right') axes[1,0].set(title='Lower Left') axes[1,1].set(title='Lower Right')

当你输入绘图命令plt.plot(np.random.rand(50).cumsum(), 'k--') plt.plot([1.5, 3.5, -2, 1.6])matplotlib会默认在最后一个图板或者图板上进行绘制,从而隐藏图片和子图的创建,图片如下python|Python日记(3)——matplotlib基础入门(1)
文章图片

使用子图网络创建图片是非常常见的任务,所以matplotlib包含了一种便捷方法plt.subplots, 它创建一个新的图片,然后返回包含了一个已生成子图对象的NumPy数组。
fig, axes = plt.subplots(2, 3)

这种方法非常实用,因为数组axes可以像二维数组那样方便地进行索引。例如,axes[0, 1]。你也可以通过使用sharexsharey来表明所有子图共享一个x轴和y轴。这在使用相同的比例进行数据对比时,这种方法会十分有效。
调整子图周围的间距
默认情况下,matplotlib会在子图的外部和子图之间留出一定的间距,这个间距都是相对于高度和宽度来指定的,所以如果你通过编程或手动GUI窗口来调整图的大小,那么图就会自动调整。你可以使用图对象上的subplots_adjust方法更改间距,也可以用作顶层函数:
subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)

wspacehspace分别控制的是图片的宽度和高度百分比吗,以用作子图间的间距,下面是个小例子,我将这个间距一直缩小到零。
fig, axes = plt.subplots(2, 2, sharex=True, sharey=True)for i in range(2): for j in range(2): axes[i, j].hist(np.random.randn(500), bins=50, color='k', alpha=0.5)plt.subplots_adjust(wspace=0, hspace=0)plt.show()

输出没有内部子图间隔的图像如下:
python|Python日记(3)——matplotlib基础入门(1)
文章图片

    推荐阅读