如何设置matplotlib让绘图窗口默认显示在外接显示器上
Matplotlib 指定外接显示器显示绘图窗口的可行方案
Matplotlib 目前没有内置plt.show(on_external_screen=True)这类直接指定显示器的参数,以下是适配 Matplotlib 3.3+ 版本(无弃用警告)的几种解决方法,适配macOS Big Sur运行环境:
方案1:替换弃用的Qt后端,自动记忆窗口位置(最省心)
之前用的QT4Agg后端已经被弃用,直接替换为官方当前支持的Qt5/Qt6后端即可,Qt系列后端自带窗口位置记忆功能:
- 先安装对应依赖:执行
pip install PyQt5(如果用PyQt6就安装PyQt6包) - 代码开头替换旧的后端切换语句:
import matplotlib matplotlib.use('Qt5Agg') # 用PyQt6就改成'Qt6Agg' import matplotlib.pyplot as plt
第一次运行代码时,把弹出的绘图窗口拖到正在使用的外接显示器上,正常关闭窗口,后续所有绘图窗口都会默认在外接显示器弹出,不会再跳回笔记本自带屏,全程不会触发弃用警告。
方案2:代码指定窗口坐标,强制在外接屏打开
如果不想依赖位置记忆,可以直接在代码里指定窗口弹出的坐标,精准落到外接显示器区域。
macOS下多屏排列时,自带屏通常为主屏,外接屏如果放在笔记本右侧,x轴的起始偏移值就是自带屏幕的横向分辨率;如果外接屏放在左侧,x坐标填对应负数即可。示例代码:
import matplotlib matplotlib.use('Qt5Agg') import matplotlib.pyplot as plt fig, ax = plt.subplots() # 正常编写绘图逻辑 ax.plot([1,2,3], [1,4,9]) # setGeometry参数依次为:窗口左上角x坐标、y坐标、窗口宽度、窗口高度 # 示例里1920是13/16寸MacBook Pro自带屏的常见横向分辨率,窗口直接落到右侧外接屏 fig.canvas.manager.window.setGeometry(1920, 180, 1280, 720) plt.show()
方案3:修改全局配置,一劳永逸
如果不想每次写代码都加后端切换语句,可以直接修改Matplotlib全局配置,永久把默认后端从自带的MacOSX改成Qt5Agg:
- 终端执行命令找到配置文件路径:
python -c "import matplotlib; print(matplotlib.matplotlib_fname())" - 打开配置文件找到
backend:配置项,把后面的值改成Qt5Agg,保存退出 - 后续正常写绘图代码即可,不需要额外加后端切换语句,窗口会自动记忆上次关闭时的所在显示器位置。
说明:默认情况下Matplotlib在macOS上使用的
MacOSX后端没有提供多显示器位置指定的接口,默认只会把窗口弹到系统设置里标记为“主显示器”的屏幕(也就是笔记本自带屏),这是绘图窗口总跳回自带屏的核心原因,更换Qt后端是目前新版本最稳定的解决方式。
内容的提问来源于stack exchange,提问作者tanasr
相关产品推荐
相关产品推荐

