什么时候必须使用plt.show()?

4
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

np.random.seed(0)  
df_new = pd.DataFrame(np.random.randn(5,3), columns=list('ABC'))

df_new.plot(kind='bar')

我不知道是否需要使用plt.show()。因为如果只有df_new.plot(kind='bar'),它会显示绘图结果。如果我添加了plot.show(),也会显示出来。它们之间有什么区别?我在使用Jupyter。提前感谢。


1
这取决于IDE。这是Jupyter还是其他什么?在图形显示之前,您可能想要做很多事情,但我猜其他东西已经足够聪明,知道脚本已经结束,并且您想在绘图窗口中绘制一个图。 - roganjosh
1
默认情况下,您需要使用 plt.show,但某些环境(如较新的 IPython 和 Jupyter 等)会自动为您启用交互模式(plt.ion()),这意味着您不必调用此函数即可获取图形。请参见官方 FAQ - Andras Deak -- Слава Україні
3个回答

2

我猜你正在使用像jupyter这样的交互式工具。
在jupyter中,如你所说 df.plot(kind ='bar') 会显示图形。
在交互式工具中,当所有的图形都创建好后,你需要使用 plt.show()

  import matplotlib.pyplot as plt
  plt.plot(x, y)
  plt.plot(y,z)
  plt.show()

在Python IDLE中,如果您仅使用df.plot(kind='bar'),则不会在运行时显示图形。
要在IDLE中显示图形而不使用plt.show(),请按照以下步骤进行操作。
 import matplotlib.pyplot as plt
 from matplotlib import interactive
 import pandas as pd
 import numpy as np

 #Set interactive mode to True
 interactive(True)
 df = pd.DataFrame(np.random.randn(5,3), columns = list('ABC'))
 df.plot(kind = 'bar')

我希望这能回答你的问题。

0

我尝试了你的代码,没有 plt.show(),图形不会显示。我认为这取决于你使用的集成开发环境(IDE)。因此,请使用 plt.show() 来保证可重现性。


0

df_new.plot(kind='bar')会实例化并返回plt对象,类似于"",因此您需要调用plt.show()以查看您的绘图。当您调用plt.show()时会发生以下情况:show()函数将绘制plt的最后一个创建对象的属性。希望对您有所帮助。


你在jupyter中看到数字的原因是因为在jupyter中你会看到代码片段中最后一行执行的操作结果,例如:如果你将7 + 5作为代码片段的最后一行并执行代码,则会显示12作为结果,尽管你没有写print(7+5)。 - Abdirahman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接