为什么我打印和生成图形的for循环出现问题?

2024-09-28 18:54:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我的for循环,在这里展示,应该为每年生成一个图。它应该先打印年份,然后再显示一个数字,但实际情况是,所有年份都先打印出来,然后所有数字都打印出来

除此之外。有一个空的数字被打印在最后

我用Spyder做记录

图片显示输出

你能帮我理解这里发生了什么,这样我就可以在将来控制我的输出吗

非常感谢

import pandas as pd
import matplotlib.pyplot as plt

plt.figure(0)

for i in range(5):
    k=2014+i
    crimesyear=crimes.loc[crimes['Year'].isin([k])]
    crimesyear.groupby('Month')['INCIDENT_ID'].c**strong text**ount().plot(marker='o')
    plt.figure(i+1)
    plt.xticks(numpy.arange(12),months)
    plt.ylabel('Number of Crimes')
    plt.show
    print(k)

First part of output

Last part of output


Tags: ofimportforoutputas记录情况plt
2条回答

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}')

查看matplotlibhere的面向对象API

这是一个没有所有数据的图表的简化版本

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

相关问题 更多 >