如何使用matplotlib / pyplot / numpy中的hist()函数创建图片的子图?

时间:2013-11-24 12:29:04

标签: matplotlib

我想用hist()函数创建四个使用matplotlib,pyplot和/或numpy制作的图片子图。 (我不完全确定这些东西之间的区别是什么。通常我只是根据一个例子导入我需要的东西。)

就我而言,我有一个列表,其中包含四个列表,这些列表描述了在涉及病毒群体的某些模拟结束时病毒颗粒的数量。这四个列表中的每一个都包含30个(整数)数字。大多数数字在0到10之间,或者在450到600之间(这意味着,在前一种情况下,病毒群已经(几乎)灭绝,或者在后一种情况下,病毒群体存活了适应某些变化的条件)。

我想在使用hist()函数创建的每个子图中显示病毒群体(几乎)灭绝,适应或介于两者之间的频率。所以我想创建四个子图直方图图片,这些图片在一张大图片中捆绑在一起。在x轴上,显示了模拟结束时的群体,并且在y轴上显示了具有该量的病毒颗粒的病毒群体的频率。

此外,我希望能够为每个子图提供标题并标记x轴和y轴。

我已经尝试通过查看关于hist()函数和pyplot中的subplot选项的文档多次这样做,但我无法弄清楚如何组合这些选项。你能给我一个小例子吗?然后我可能会推断如何根据我的情况调整示例。

1 个答案:

答案 0 :(得分:19)

除非您还不熟悉,否则应该查看matplotlib gallery 在那里,您会发现很多热门示例,可以使用add_subplotsubplots命令。

您可能希望实现的最小范例是

import matplotlib.pyplot as plt
import numpy as np

data=np.random.random((4,10))
xaxes = ['x1','x2','x3','x4']
yaxes = ['y1','y2','y3','y4']
titles = ['t1','t2','t3','t4'] 

f,a = plt.subplots(2,2)
a = a.ravel()
for idx,ax in enumerate(a):
    ax.hist(data[idx])
    ax.set_title(titles[idx])
    ax.set_xlabel(xaxes[idx])
    ax.set_ylabel(yaxes[idx])
plt.tight_layout()

会产生类似于的情节 enter image description here