我想在一个图中的一个轴上绘制多个箱线图。然而,我用于箱线图的数据太大,无法立即读入内存。所以我使用 pandas read_csv() 分块读取它。我想做的是在每次迭代中生成一些箱线图,并将迭代 i 中的新箱线图添加到与迭代 i-1 中的箱线图相同的图形中,而不保留迭代 i-1 的数据。
我想强调的是,我不需要更新现有箱线图的数据。这更像是我每次迭代都会得到一个新的数据列,我想在现有箱线图旁边显示该列的箱线图。
例如:说我有
df = pd.DataFrame(np.random.rand(100,2))
假设我只能一个接一个地阅读这些专栏。如何将第二列的箱线图添加到第一列的现有箱线图中以获得与 ax.boxplot(df.values) 相同的结果?
最佳答案
boxplot方法有一个 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()
关于python - matplotlib - 循环生成箱线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25786631/