循环内绘制的子图图表非常紧凑

时间:2019-09-18 08:36:57

标签: python matplotlib seaborn

我有一个数据框,每年要检查约120个功能。我正在绘制每个特征,x =年,y =特征值。这些图成功绘制后,由于完全压缩,因此图表难以辨认。

我尝试使用plt.tight_layout()并使用plt.rcParams ['figure.figsize']调整图形大小,但遗憾的是无济于事

for i in range(len(roll_df.columns)):
  plt.subplot(len(roll_df.columns), 1, i+1)
  name = roll_df.columns[i]
  plt.plot(roll_df[name])
  plt.title(name, y=0)
  plt.yticks([])
  plt.xticks([])
  plt.tight_layout()
  plt.show()

循环运行,但所有图都在y轴上被压缩,以致变得难以辨认:

plot

1 个答案:

答案 0 :(得分:1)

Matplotlib不会自动调整图形的大小。因此,如果在彼此下方添加更多子图,它将划分可用空间而不是扩展图形。这就是为什么您的y轴是如此之窄。

您可以尝试预先定义图形尺寸,或根据您拥有多少个子图来确定图形尺寸:

n_plots = roll_df.shape[1]
fig, axes = plt.subplots(n_plots, 1, figsize=(8, 4 * n_plots), tight_layout=True)

# Then your usual part, but plot on the created axes
for i in range(n_plots):
  name = roll_df.columns[i]
  axes[i].plot(roll_df[name])
  axes[i].title(name, y=0)
  axes[i].yticks([])
  axes[i].xticks([])

plt.show()