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

PyCharm中代码仅绘制plot却不打印DataFrame head的原因

为什么plt.show()之后的print语句没有执行?

这个问题其实很常见——plt.show()是一个阻塞函数,在你手动关闭弹出的Matplotlib绘图窗口之前,程序会一直卡在这一行,根本不会往下执行后面的print(df.head(10))。

简单来说,当你调用plt.show()时,Matplotlib会启动一个GUI事件循环,这个循环会“霸占”程序的执行流程,直到你关闭绘图窗口,程序才会继续处理后续代码。所以你现在看到的情况是:绘图窗口正开着,而打印数据的代码还没轮到执行呢。

解决方法有两种,看你的需求选:

  1. 先打印数据,再显示图形
    把print语句移到plt.show()之前,这样程序会先输出DataFrame的前10行,再弹出绘图窗口:

    import pandas as pd
    import matplotlib.pyplot as plt
    df = pd.read_csv("file.csv")
    df.set_index("id", inplace=True)
    print(df.head(10))  # 先执行打印
    plt.plot(df)
    plt.show()
    
  2. 开启非阻塞模式,同时显示图形和打印数据
    如果你想让图形窗口和打印内容同时出现(不用关窗口也能看到打印结果),可以开启Matplotlib的交互模式:

    import pandas as pd
    import matplotlib.pyplot as plt
    
    plt.ion()  # 打开交互模式
    df = pd.read_csv("file.csv")
    df.set_index("id", inplace=True)
    plt.plot(df)
    plt.show(block=False)  # 非阻塞显示图形
    print(df.head(10))
    
    # 最后如果需要保持图形窗口打开,加上这两行
    plt.ioff()
    plt.show()
    

在PyCharm的默认配置下,Matplotlib的后端是支持交互的,但plt.show()默认是阻塞状态,所以上面两种方法都能完美解决你的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:24:00