先参照《利用Python进行数据分析》的内容过一遍matplotlib库基本api的操作,后续的学习添加一些fashion的东西,备忘用。 首先,导库 import matplotlib.pyplot as plt,from numpy.random import randn(用于产生随机数)
Figure画布Subplot子图 调整subplot周围的间距 颜色标记和线型刻度标签和图例 设置标题轴标签刻度刻度标签添加图例 注解图表保存到文件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位置上创建子图)
5.当前子图上画图
plt.plot(randn(50).cumsum(), 'k--')6.指定子图上画图
_ = ax1.hist(randn(100), bins=20, color=''k, alpha=0.3) ax2.scatter(np.arange(30), np.arange(30) + 3*randn(30))7.同时创建画布和子图
In[65]: fig, axes = plt.subplots(2, 3) In[66]: axes Out[66]: array([[<matplotlib.axes._subplots.AxesSubplot object at 0x00000000093FC748>, <matplotlib.axes._subplots.AxesSubplot object at 0x0000000009DB9CF8>, <matplotlib.axes._subplots.AxesSubplot object at 0x0000000009E24E48>], [<matplotlib.axes._subplots.AxesSubplot object at 0x0000000009E7D748>, <matplotlib.axes._subplots.AxesSubplot object at 0x0000000009EE4C88>, <matplotlib.axes._subplots.AxesSubplot object at 0x0000000009F3E4A8>]], dtype=object)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')轴标签
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上提供动态生成的图片很实用。