You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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环境下的绘图补充说明

  1. 提升图像分辨率:可通过全局设置修改默认DPI:

    plt.rcParams['figure.dpi'] = 300  # 默认DPI为100
    

    也可以在创建Figure时直接指定参数:

    fig, ax = plt.subplots(dpi=300)
    ax.scatter(*rng.integers(10, size=(2,10)))
    
  2. 解决绘图无法更新数据的问题:
    若使用面向对象接口绘图时遇到静态显示、无法更新数据的情况,是因为Spyder默认的inline绘图模式为静态模式。解决步骤:

    • 打开Spyder设置:Tools -> Preferences -> IPython console -> Graphics
    • 在Graphics backend选项中选择Automatic
    • 此时绘图会在独立窗口显示,支持调用scatter()时实时更新数据

内容的提问来源于stack exchange,提问作者user2153235

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 15:21:09