Python日记(3)——matplotlib基础入门(1)
每天做一个Python小练习,顺便记录一些小技巧。
由于化工实验数据处理需要把数据转换成图标,所以要逐步学习Python里比较好用的matplotlib库,加下来就是从0基础开始学习的过程。
(1)简明matplotlib
在使用matplotlib库之前,先添加进该库和另一个常用的库Numpy。
在Pycharm下有个Python Packages方便我们下载需要的库,示意图如下:
添加好需要的两个库之后,就可以导入使用了。
import matplotlib.pyplot as plt
import numpy as np
这里导入的时候,使用了简化名,为了方便以后使用。
接下来,就可以尝试生成一个简单的图形。
import matplotlib.pyplot as plt
import numpy as np
data = np.arange(10)
plt.plot(data)
plt.show()
创建好实例后,务必在最后写上show(),才能展示你所要创建的图片。
就会得到以下的图形:
(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个,最多只能创建四个。
得到图片如下:
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会默认在最后一个图板或者图板上进行绘制,从而隐藏图片和子图的创建,图片如下
使用子图网络创建图片是非常常见的任务,所以matplotlib包含了一种便捷方法
plt.subplots
, 它创建一个新的图片,然后返回包含了一个已生成子图对象的NumPy数组。
fig, axes = plt.subplots(2,3)
这种方法非常实用,因为数组axes可以像二维数组那样方便地进行索引。例如,
axes[0, 1]
。你也可以通过使用
sharex
和
sharey
来表明所有子图共享一个x轴和y轴。这在使用相同的比例进行数据对比时,这种方法会十分有效。
调整子图周围的间距
默认情况下,matplotlib会在子图的外部和子图之间留出一定的间距,这个间距都是相对于高度和宽度来指定的,所以如果你通过编程或手动GUI窗口来调整图的大小,那么图就会自动调整。你可以使用图对象上的
subplots_adjust
方法更改间距,也可以用作顶层函数:
subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)
wspace
和
hspace
分别控制的是图片的宽度和高度百分比吗,以用作子图间的间距,下面是个小例子,我将这个间距一直缩小到零。
fig, axes = plt.subplots(2,2, sharex=True, sharey=True)for i inrange(2):for j inrange(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()
输出没有内部子图间隔的图像如下:
版权归原作者 June_Pyt 所有, 如有侵权,请联系我们删除。