Matplotlib Tips

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()用于设置图像的标题。

Matplotlib Tips_第1张图片
光谱图

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

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')用于关闭子图。

Matplotlib Tips_第2张图片
pcolormesh

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

样式增强

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

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

import seaborn as sns

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

欢迎Follow我的GitHub:https://github.com/SpikeKing

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

OK, that's all!

你可能感兴趣的:(Matplotlib Tips)