PyCharm中代码仅绘制plot却不打印DataFrame head的原因
为什么plt.show()之后的print语句没有执行?
这个问题其实很常见——plt.show()是一个阻塞函数,在你手动关闭弹出的Matplotlib绘图窗口之前,程序会一直卡在这一行,根本不会往下执行后面的print(df.head(10))。
简单来说,当你调用plt.show()时,Matplotlib会启动一个GUI事件循环,这个循环会“霸占”程序的执行流程,直到你关闭绘图窗口,程序才会继续处理后续代码。所以你现在看到的情况是:绘图窗口正开着,而打印数据的代码还没轮到执行呢。
解决方法有两种,看你的需求选:
先打印数据,再显示图形
把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()开启非阻塞模式,同时显示图形和打印数据
如果你想让图形窗口和打印内容同时出现(不用关窗口也能看到打印结果),可以开启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
相关产品推荐
相关产品推荐

