Matplotlib Tips

作者: SpikeKing | 来源:发表于2018-04-18 16:29 被阅读186次

    Matplolib是最常用的Python数据绘图工具库,支持不同样式数据的图像绘制。本文介绍一些使用Matplotlib库的注意事项,主要包括:

    • subplots
    • 布局调整
    • specgram(光谱图)
    • pcolormesh
    • 样式增强
    Matplolib

    subplots

    subplots()是绘图的开始,创建不同子图的排列结构。

    如下:

    import matplotlib.pyplot as plt
    
    fig, axes = plt.subplots(nrows=2, ncols=2)
    plt.show()
    

    最终的图像展示使用plt.show()方法。

    返回:

    • fig:绘图的底版,用于显示整个背景轮廓,等同于plt.gcf();
    • axes:子图的集合,通过下标选中单个子图,如axes[0][0]

    参数:

    • nrowsncols:子图排列的行和列;

    非规则的排列,使用subplot2grid(),通过结构shape位置loc排列子图,如,排列5个子图,上三下二结构:

    ax1 = plt.subplot2grid(shape=(2, 6), loc=(0, 0), colspan=2)
    ax2 = plt.subplot2grid((2, 6), (0, 2), colspan=2)
    ax3 = plt.subplot2grid((2, 6), (0, 4), colspan=2)
    ax4 = plt.subplot2grid((2, 6), (1, 1), colspan=2)
    ax5 = plt.subplot2grid((2, 6), (1, 3), colspan=2)
    

    布局调整

    在排列子图的过程中,可能出现:

    • 坐标轴遮挡:使用tight_layout()设置间距,其中pad表示整体轮廓间距,w_pad表示子图水平间距,h_pad表示子图竖直间距;
    • 图像密集:使用set_size_inches()设置图像长宽的具体尺寸(英寸);

    即:

    plt.tight_layout(pad=0.4, w_pad=0.5, h_pad=1.0)
    fig = plt.gcf()
    fig.set_size_inches(10, 8)
    

    这样,子图就可以优雅地排列在一起了。

    specgram

    连续信号推荐使用specgram()展示,即光谱图(spectrogram)。

    参数:

    • x:信号连续值列表;
    • Fs:信号帧率;

    即:

    axes[0, 0].specgram(x=y, Fs=sr)  # 光谱图
    axes[0, 0].set_title('std')
    

    set_title()用于设置图像的标题。

    光谱图

    连续信号不推荐使用线图展示,因为在信号中,一般含有帧率,即每秒信号数,而使用线图展示,就会忽略帧率信息,无法体现波形的相似性。

    pcolormesh

    二维特征推荐使用pcolormesh()展示。除此之外,相似的展示形式:

    • contourf:等高线,与pcolormesh类似,边界较为模糊;
    • imshow:图像模式,支持模糊处理,自适应宽高需要设置aspect的“auto”属性;

    axes[0, 0].pcolormesh(df1)
    axes[0, 1].contourf(df2)
    axes[1, 0].imshow(df2, interpolation='bicubic', aspect='auto')
    axes[1, 1].axis('off')
    

    axis('off')用于关闭子图。

    pcolormesh

    二维特征不推荐使用散点图,因为散点图的展示区域较小,对比效果较差。

    样式增强

    seaborn是Matplotlib的颜色和样式扩展。

    使用方式:在plt绘制之前,通过seaborn声明其他的展示样式。

    import seaborn as sns
    
    sns.set(style='ticks', palette='Set2')
    

    欢迎Follow我的GitHubhttps://github.com/SpikeKing

    By C. L. Wang @ 美图云事业部

    OK, that's all!

    相关文章

      网友评论

      本文标题:Matplotlib Tips

      本文链接:https://www.haomeiwen.com/subject/ouhhkftx.html