使用matplotlib按数据列表分别绘制直方图

1 投票
1 回答
2184 浏览
提问于 2025-04-17 19:24

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

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

这样做的话,输出的结果只有一个图形,里面的条形图都是不同直方图的,放在同一个区间里(比如第一个区间里包含了每个直方图的第一个条形图)。我想要的是每个直方图分开显示。

我试着用一个循环:

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

但是这样的话,我每次只能看到一个直方图,想要看到下一个,得先关闭前一个。那我该怎么做呢?

1 个回答

3

使用子图功能。选择合适的行数n_rows和列数n_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()放在循环外面,这样图形只会在屏幕上显示一次,就不需要关闭之前那些未完成的版本了。

撰写回答