循环内绘制的子图图表非常挤压

cmp*_*cmp 2 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()
Run Code Online (Sandbox Code Playgroud)

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

阴谋

cri*_*ate 5

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()
Run Code Online (Sandbox Code Playgroud)