在Spyder中如何从PyPlot的scatter绘图对象获取DPI值?
从Scatter绘图对象获取DPI及Spyder绘图相关问题解决
核心问题:从scatter对象获取DPI值
plt.scatter()返回的是PathCollection类型对象,这类绘图元素本身并不存储DPI信息——DPI是属于整个图像(Figure)的属性。要获取当前图像的DPI,需要通过scatter对象追溯到它所属的Figure:
示例代码
import numpy as np import matplotlib.pyplot as plt rng = np.random.default_rng(1) scat = plt.scatter(*rng.integers(10, size=(2,10))) # 获取对应Figure的DPI fig = scat.get_figure() print(f"当前图像DPI: {fig.dpi}") # 也可以通过axes间接获取:scat.axes.figure.dpi
说明:
- 调用
scat.get_figure()可直接获取该散点图所属的Figure对象 - Figure对象自带
dpi属性,也可通过fig.get_dpi()方法获取DPI值
Spyder环境下的绘图补充说明
提升图像分辨率:可通过全局设置修改默认DPI:
plt.rcParams['figure.dpi'] = 300 # 默认DPI为100也可以在创建Figure时直接指定参数:
fig, ax = plt.subplots(dpi=300) ax.scatter(*rng.integers(10, size=(2,10)))解决绘图无法更新数据的问题:
若使用面向对象接口绘图时遇到静态显示、无法更新数据的情况,是因为Spyder默认的inline绘图模式为静态模式。解决步骤:- 打开Spyder设置:
Tools -> Preferences -> IPython console -> Graphics - 在
Graphics backend选项中选择Automatic - 此时绘图会在独立窗口显示,支持调用
scatter()时实时更新数据
- 打开Spyder设置:
内容的提问来源于stack exchange,提问作者user2153235
相关产品推荐
相关产品推荐

