Matplotlib设置figsize后绘图尺寸未变化,是否与sns.set_style有关?
Matplotlib scatter_matrix 画布尺寸不生效问题解答
1. 提前设置plt.figure(figsize=(12,6))不生效的原因
- 核心原因是
pd.plotting.scatter_matrix()默认会自动创建全新的画布对象,不会复用你提前通过plt.figure()生成的画布。你提前创建的126尺寸画布没有被绘图逻辑使用,就是输出日志中显示的<Figure size 864x432 with 0 Axes>(12、6英寸对应默认72dpi下的像素就是864432),实际的散点矩阵图是scatter_matrix内部调用默认尺寸新建画布绘制的。 - 修复方案:直接将尺寸参数传入scatter_matrix方法即可,修改后代码如下:
pd.plotting.scatter_matrix(Effect_Wf_f, figsize=(12,6)) plt.show()
如果需要提前创建画布复用,也可以将生成的轴对象传入方法:
fig, ax = plt.subplots(figsize=(12,6)) pd.plotting.scatter_matrix(Effect_Wf_f, ax=ax) plt.show()
2. sns.set_style('whitegrid')是否是问题诱因
- 该配置不会导致画布尺寸失效。
sns.set_style()仅控制图表的样式属性,包括背景、网格线样式、坐标轴刻度、字体外观等,不会修改画布尺寸相关的默认配置。如果默认画布尺寸被修改,通常是调用了sns.set()全局配置、或是手动修改了matplotlib.rcParams['figure.figsize']参数导致的,和set_style无关。
内容的提问来源于stack exchange,提问作者Rupneet
相关产品推荐
相关产品推荐

