matplotlib图形显示而无需调用plt.show(),plt.show()不会在Jupyter Notebook的单独单元格中显示图形

时间:2019-08-14 21:13:36

标签: python-3.x matplotlib graph jupyter-notebook bar-chart

我对这里的代码感到困惑,当我在Jupyter Notebook中将代码开发到不同的单元格时,我逐渐注意到,在不调用plt.show()的情况下出现了matplotlib图,这对我来说是违反直觉的。

因此,如果您实现以下脚本,则该图表将不带plt.show()弹出:

data = np.array([
[5,   3,  2 ],
[2,  -3,  5 ],
[ -4, 4, -6],
[-5, -3, -1],
[2,   6,   6]     
])
bar_markers = np.array([4, 3, -2, 2, -1])
index = np.arange(len(data[:, 0]))
width = 0.15

fig, ax = plt.subplots()

ax.bar(index, data[:,0], width, bottom = 0, color = 'yellowgreen')
ax.bar(index+width, data[:, 1], width, bottom = 0, color = 'purple')
ax.bar(index+2*width, data[:, 2], width, bottom = 0, color = np.random.rand(3,))
ax.bar(index+width, [0]*len(bar_markers), width*3, bottom=bar_markers, edgecolor='k')

enter image description here

换句话说,当您在Jupyter Notebook中逐个单元地开发代码单元时,这会引起混乱,因为1)当您实际尝试在另一个单元格中使用plt.show()显示图形时,它不会显示完全没有图; 2)每当您使用fig, ax = plt.subplots()初始化图形时,它将立即显示一个空图形。我的意思如下所示:

# in the first cell in Jupyter Notebook
data = np.array([
[5,   3,  2 ],
[2,  -3,  5 ],
[ -4, 4, -6],
[-5, -3, -1],
[2,   6,   6]     
])
bar_markers = np.array([4, 3, -2, 2, -1])
index = np.arange(len(data[:, 0]))
width = 0.15

fig, ax = plt.subplots()

实施后,将无故弹出空白图表。enter image description here

# Then when you keep coding in a different cell
ax.bar(index, data[:,0], width, bottom = 0, color = 'yellowgreen')
ax.bar(index+width, data[:, 1], width, bottom = 0, color = 'purple')
ax.bar(index+2*width, data[:, 2], width, bottom = 0, color = np.random.rand(3,))
ax.bar(index+width, [0]*len(bar_markers), width*3, bottom=bar_markers, edgecolor='k')

plt.show()

它什么也没显示。

如果您知道原因,请提前告知我们。

0 个答案:

没有答案