我正在使用Jupyter笔记本,并尝试为第三个分类变量的几个值(大约350)生成两个变量的散点图(具有最佳拟合线)。到目前为止,这是我的代码:
nrows = 20
ncols = 20
fig = plt.figure(figsize=(20,20), dpi=100)
for i, third_variable_value in enumerate(df.third_variable.unique()):
ax = fig.add_subplot(nrows, ncols, i + 1)
sns.regplot(data=df[df.third_variable == third_variable_value], x='first_variable', y='second_variable', ax=ax)
fig.tight_layout()
fig.savefig('test.jpg', dpi=400)
我已经阅读了关于使用增加的DPI的问题here和here,因为matplotlib
要求图形适合屏幕;和tight_layout()
以防止重叠。
但是,保存的图形的字体相对于绘图区域而言太大,并且轴缩小以变小但点保持相同的大小。有没有办法整个缩小每个子图?理想情况下,我希望将绘图区域的纵横比保持为单个图形,并将绘图区域与字体大小比率固定。
我知道我可以使用类似sns.lmplot(data=df, x='first_variable', y='second_variable', col='third_variable', sharey=False, sharex=False, col_wrap=30)
之类的东西来做,但我想以上述方式进行,因为我最终想要通过第四个变量的值为每个点着色,但只有一个最佳拟合线,并将用sns.regplot()
函数替换matplotlib
。