我想在一个轴上绘制一个图中的几个箱图。但是,我用于箱图的数据太大而无法立即读入内存。所以我使用pandas read_csv()以块的形式阅读它。我想要做的是在每次迭代中生成一些箱图,并将迭代i中的新箱图添加到与迭代i-1的箱图相同的图中,而不是保留迭代i-1的数据。
我想强调一点,我不需要更新已有的箱图的数据。这更像是每次迭代都得到一个新的数据列,我想在现有的boxplot旁边显示该列的boxplot。
例如:说我有
df = pd.DataFrame(np.random.rand(100,2))
假设我只能一个接一个地读取列。如何将第二列的boxplot添加到第一列的现有boxplot中,以获得与ax.boxplot(df.values)相同的结果?
答案 0 :(得分:5)
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()
答案 1 :(得分:1)
请注意以下更新:
ax.boxplot(x.ix[:,i].values, positions = [i])
应替换为:
ax.boxplot(x.iloc[:,i].values, positions = [i])
不推荐使用ix。