为什么我的for循环打印打印和生成图形不正确?

时间:2019-03-09 14:56:17

标签: python for-loop matplotlib spyder

这里介绍的我的for循环应该每年生成一个图。它应该打印年份,然后显示一个数字。但是发生的是,所有年份都首先被打印,然后所有数字都被打印。

最重要的是。最终打印出一个空图。

我正在使用Spyder作记录。

附有

图片以显示输出。

能否请您帮助我了解此处发生的情况,以便将来控制输出?

非常感谢。

df1

First part of output

Last part of output

2 个答案:

答案 0 :(得分:0)

这是没有所有数据的图形的简化版本。

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

for i in range(5):
    k=2014+i
    plt.figure(i)
    plt.title(str(k))
    plt.ylabel('Number of Crimes')
plt.show()

您额外的空白图表一开始来自plt.figure(0)。最后只需要执行一次plt.show()。您可以使用plt.title(<string goes here>)设置标题。通常,显示内容是对另一个程序的异步调用,因此通常很难预测看到内容的顺序-我对这里的细节不了解spyder。

答案 1 :(得分:0)

Matplotlib有一种无需使用有状态接口即可生成图的方法。这应该可以帮助您循环生成图。

fig, ax = plt.subplots(nrows=2, ncols=1, figsize=(5, 10))

for i, a in enumerate(ax):
    a.plot(np.arange(10))
    a.set_title(f'test {i}')

查看matplotlib here的面向对象API