在Matplotlib中制作包含许多子图的可用数字

时间:2017-11-23 01:11:22

标签: python matplotlib jupyter subplot

我正在使用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的问题herehere,因为matplotlib要求图形适合屏幕;和tight_layout()以防止重叠。

但是,保存的图形的字体相对于绘图区域而言太大,并且轴缩小以变小但点保持相同的大小。有没有办法整个缩小每个子图?理想情况下,我希望将绘图区域的纵横比保持为单个图形,并将绘图区域与字体大小比率固定。

这是保存文件的两个示例视图。 enter image description here enter image description here

我知道我可以使用类似sns.lmplot(data=df, x='first_variable', y='second_variable', col='third_variable', sharey=False, sharex=False, col_wrap=30)之类的东西来做,但我想以上述方式进行,因为我最终想要通过第四个变量的值为每个点着色,但只有一个最佳拟合线,并将用sns.regplot()函数替换matplotlib

0 个答案:

没有答案