matplotlib - 在循环中生成箱形图

use*_*991 5 python matplotlib

我想在一个轴上绘制一个图中的几个箱形图.但是,我用于箱图的数据太大而无法立即读入内存.所以我使用pandas read_csv()以块的形式阅读它.我想做的是在每次迭代中产生一些箱图,并将迭代i中的新箱图添加到与迭代i-1的箱图相同的图中,而不是继续迭代i-1的数据.

我想强调一点,我不需要更新现有箱图的数据.这更像是每次迭代都得到一个新的数据列,我想在现有的boxplot旁边显示该列的boxplot.

例如:说我有

df = pd.DataFrame(np.random.rand(100,2))
Run Code Online (Sandbox Code Playgroud)

假设我只能一个接一个地读取列.如何将第二列的boxplot添加到第一列的现有boxplot中,以获得与ax.boxplot(df.values)相同的结果?

Kor*_*rem 7

箱线图方法有一个positions说法.使用它,您可以在循环中保证每个箱图(或多个箱图)都设置在它的位置.

这是一些代码:

In [17]: x = pds.DataFrame(np.random.randn(10, 10))
In [18]: fig = plt.figure()
In [19]: ax = plt.subplot(111)
In [20]: for i in range(10):
    ...:     ax.boxplot(x.ix[:,i].values, positions = [i])
    ...:     
In [21]: ax.set_xlim(-0.5, 9.5)
In [22]: plt.show()
Run Code Online (Sandbox Code Playgroud)

  • 好的,秘密要素是`ax.set_xlim()`。没有它,其他职位就不会被继任职位取代(如我在上文所述),而只是未显示在图中。谢谢! (3认同)