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

PyCharm中IPython.display无法正常显示Matplotlib相关性矩阵图

问题原因
  • IPython.display.display仅在Jupyter Notebook/Lab这类交互笔记本环境下能自动渲染Matplotlib图像,在PyCharm的普通Python运行环境中只会输出Figure对象的字符串表示,也就是你看到的Figure(1200x900),不会触发绘图渲染。
  • 代码里用的FigureCanvasAgg是纯文件输出的非交互后端,本身就不支持弹窗/界面显示,只适合把图导出为本地图片文件。
  • 代码本身还有两处小问题:一是重复调用set_xticklabels,第二次无参数配置的调用会覆盖第一次设置的旋转、加粗字体效果;二是漏写了y轴刻度标签的设置,最终y轴只会显示数字不会显示列名。
可用修复方法
  • 方法一:PyCharm中弹窗显示(完全保留Matplotlib面向对象API写法,不依赖pyplot全局绘图接口)
    把非交互的Agg后端换成支持TK界面的交互后端,绑定TK窗口实现弹窗显示,修正后完整代码:
import pandas as pd
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg as FigureCanvas
from matplotlib.figure import Figure
import tkinter as tk

wine_quality = pd.read_csv('Matplotlib-3.0-Cookbook-master/Chapter02/winequality.csv', delimiter=';')
corr = wine_quality.corr()

fig = Figure(figsize=(12, 9))
# 初始化TK弹窗载体
root = tk.Tk()
root.title("相关性矩阵热力图")
canvas = FigureCanvas(fig)
canvas.get_tk_widget().pack()

axs = fig.add_subplot(111)
corimage = axs.imshow(corr, cmap='hot')
fig.colorbar(corimage)

fontd = {'fontsize': 10,
         'fontweight': 'bold',
         'rotation': 45}

axs.set(xticks=range(len(corr)), yticks=range(len(corr)),
        title='Correlation Matrix')
axs.set_xticklabels(corr.columns, fontdict=fontd)
axs.set_yticklabels(corr.columns)

canvas.draw()
root.mainloop()
  • 方法二:直接导出图片到本地
    如果不需要弹窗交互查看,保留原来的Agg后端即可,删掉IPython相关的导入和display(fig)调用,在代码最后加一行保存命令:
    fig.savefig('correlation_heatmap.png', dpi=150, bbox_inches='tight')
    
    运行后会在代码同级目录生成渲染完成的热力图文件。
  • 方法三:用PyCharm自带的SciView面板显示
    想在PyCharm右侧科学计算视图里看图像的话,不需要写TK弹窗逻辑,只要在代码最后调用pyplot的show方法即可——这一步只是触发显示,不会破坏你用面向对象API绘图的逻辑,不会引入pyplot的全局状态问题:
    # 删掉IPython相关导入和display(fig),最后加这两行
    import matplotlib.pyplot as plt
    plt.show()
    

注意:原代码里重复的axs.set_xticklabels(corr.columns)一定要删除,否则x轴标签的旋转、加粗效果会被覆盖,和教程展示的效果不一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:01:15