使用matplotlib在python中通过数据列表分别绘制直方图

时间:2013-03-17 14:24:10

标签: python matplotlib

我有一个嵌套列表,我需要在不同的直方图上绘制数据。

    ...
    ...
    numbers = [[float(line[1]) for line in chr ] for chr in result]
    plt.hist(numbers)
    plt.show()

这样做,输出是一个唯一的数字,每个bin中不同直方图的条形(例如第一个bin包含每个直方图的第一个条形)而不是我想要的是具有单独的直方图。 我试着做一个循环:

    for w in numbers:
       plt.hist(w)
       plt.show()

但这样做我每次只获得一个直方图,只有当我关闭前一个时,我才能看到下一个直方图。 我该怎么办?

1 个答案:

答案 0 :(得分:3)

使用subplots。选择n_rowsn_columns,以便制作len(numbers)子图。 i从1开始,而不是0.

i = 1
for w in numbers:
    plt.subplot(n_rows, n_columns, i)
    i += 1
    plt.hist(w)
plt.show()

通过将plt.show()从for循环中取出,图形仅在屏幕上绘制一次,并且无需关闭早期的不完整版本。