我对这里的代码感到困惑,当我在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')
换句话说,当您在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()
# 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()
它什么也没显示。
如果您知道原因,请提前告知我们。