matplotlib学习记录(一)

来源:互联网 发布:泰德奥plc编程软件 编辑:程序博客网 时间:2024/05/19 08:44

先参照《利用Python进行数据分析》的内容过一遍matplotlib库基本api的操作,后续的学习添加一些fashion的东西,备忘用。
首先,导库 import matplotlib.pyplot as pltfrom numpy.random import randn(用于产生随机数)

  • Figure画布Subplot子图
    • 调整subplot周围的间距
  • 颜色标记和线型
  • 刻度标签和图例
    • 设置标题轴标签刻度刻度标签
    • 添加图例
  • 注解
  • 图表保存到文件

Figure(画布)&&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]: axesOut[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)

这里写图片描述

调整subplot周围的间距

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')

这里写图片描述

刻度、标签和图例

设置标题、轴标签、刻度、刻度标签

  1. 刻度、刻度标签
    调用时不带参数,返回参数值。例,plt.xlim()返回当前X轴绘图范围
    调用时带参数,则设置参数值。例,plt.xlim([0, 10])将X轴范围设为0到10
    对于子图,函数为ax.get_xlim和ax.set_xlim
    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') 
  1. 轴标签

    ax.set_xlabel('Stages')
  2. 标题

    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上提供动态生成的图片很实用。

这里写图片描述

0 0