PyCharm社区版matplotlib绘图窗口无响应,求替代block=True的方案
PyCharm社区版Matplotlib绘图窗口无响应的永久解决方法
以下是几种无需每次添加block=True的解决方案:
修改Matplotlib后端配置
Matplotlib的后端决定了绘图窗口的渲染方式,PyCharm社区版默认后端可能导致窗口无响应,切换为交互式后端即可解决:
- 代码内全局设置:在导入matplotlib后添加后端切换代码,所有绘图都会自动使用该后端:
之后直接调用import matplotlib.pyplot as plt plt.switch_backend('TkAgg') # 也可选择Qt5Agg、QtAgg,根据系统兼容性调整plt.show()即可,无需额外参数。 - 全局配置文件修改:找到Matplotlib的配置文件
matplotlibrc,将backend字段改为交互式后端,所有Python项目都会生效。
可通过以下命令获取配置文件路径:
打开文件后找到import matplotlib print(matplotlib.matplotlib_fname())backend : agg行,替换为backend : TkAgg并保存。
配置PyCharm运行环境
在PyCharm的运行配置中添加环境变量,强制指定Matplotlib后端:
- 点击菜单栏
Run->Edit Configurations - 在弹出窗口中找到
Environment variables,点击右侧编辑按钮 - 添加键值对:
MPLBACKEND=TkAgg - 保存配置,之后运行项目时会自动加载指定后端,绘图窗口正常响应。
使用IPython交互式控制台
PyCharm的IPython控制台对Matplotlib的交互式支持更友好:
- 点击
File->Settings->Build, Execution, Deployment->Console->Python Console - 将
Python interpreter切换为IPython(未安装可通过PyCharm包管理器安装) - 勾选
Run code in console选项 - 之后运行代码时,绘图窗口会正常响应,无需额外设置。
修改后的示例代码
import matplotlib.pyplot as plt plt.switch_backend('TkAgg') import pandas as pd import seaborn as sns df = sns.load_dataset("titanic") pd.set_option("display.max_columns", None) pd.set_option("display.width", 500) df.head() plt.boxplot(df["fare"]) plt.show()
内容的提问来源于stack exchange,提问作者Özgür Sanli
相关产品推荐
相关产品推荐

