先参照《利用Python进行数据分析》的内容过一遍matplotlib库基本api的操作,后续的学习添加一些fashion的东西,备忘用。
首先,导库 import matplotlib.pyplot as plt
,from numpy.random import randn
(用于产生随机数)
1.创建画布对象Figure:
fig = plt.figure()
2.创建时设定纵横比:
fig = plt.figure(figsize=(16, 8))
3.获取当前Figure:
fig = plt.gcf()
4.在画布上创建子图(至少一张):
ax1 = fig.add_subplot(2, 2, 1)
ax2 = fig.add_subplot(2, 2, 2)
ax3 = fig.add_subplot(2, 2, 3)
(把画布切分成2行2列,在1,2,3位置上创建子图)
plt.plot(randn(50).cumsum(), 'k--')
_ = ax1.hist(randn(100), bins=20, color=''k, alpha=0.3)
ax2.scatter(np.arange(30), np.arange(30) + 3*randn(30))
In[65]: fig, axes = plt.subplots(2, 3)
In[66]: axes
Out[66]:
array([[,
,
],
[,
,
]], dtype=object)
subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)
wspace和hspace控制宽度和高度百分比,可用作subplot的间距。
fig, axes= plt.subplots(2, 2, sharex=True, sharey=True)
for i in range(2):
for j in range(2):
axes[i, j].hist(randn(500), bins=50, color='k', alpha=0.5)
plt.subplots_adjust(wspace=0, hspace=0)
plot函数接受X,Y轴坐标,颜色(可指定RGB值,如’#CECECE’),线型,标记。
ax.plot(x, y, 'ko--')
等同于:
ax.plot (x, y, color='k', linesytle='--', marker='o')
plt.xlim()
返回当前X轴绘图范围 plt.xlim([0, 10])
将X轴范围设为0到10 set_xticks
决定将刻度放在什么位置,set_xticklabels
设置刻度标签为 ticks = ax.set_xticks([0 ,250, 500, 750, 1000])
labels = ax.set_xticklabels(['one', 'two', 'three', 'four', 'five'], rotation=30, fontsize='small')
轴标签
ax.set_xlabel('Stages')
标题
ax.set_title('My first matplotlib plot')
在添加subplot的时候传入label参数:
ax.plot(x, y, 'k', label='one')
用ax.legend()
或plt.legend()
创建图例:
ax.legend(loc='best')
注解可以通过text、arrow和annotate等函数添加,可绘制在图标的指定坐标(x,y),还可以添加自定义格式:
ax.text(x, y, 'Hello world!', family='monospace', fontsize=10)
更多内容见matplotlib库。
想存为什么格式改扩展名就行了:
plt.savefig('figpath.svg')
最重要的两个参数是dpi(控制”每英寸点数“分辨率)和bbox_inches(可剪除当前图表周围的空白部分),得到一张带有最小白边且分辨为400DPI的PNG图片:
plt.savefig('figpath.png', dpi=400, bbox_inches='tight')
savefig可以写入任何文件类型的对象,比如StringIO:
from io import StringIO
buffer = StringIO()
plt.savefig(buffer)
plot_data = buffer.getvalue()
这在Web上提供动态生成的图片很实用。