假设我的计算机上有4个文件保存为.npz文件:W,X,Y和Z. 我们假设我的计算机在RAM消耗方面不能同时加载多于一个。
我怎样才能运行此命令? :
matplotlib.pyplot.boxplot([W],[X],[Y],[Z])
换句话说,如何加载W,绘制W,删除W然后加载Y,绘制Y,删除Y,...并将其中的4个放在同一个图上? (而不是子情节)
谢谢!
答案 0 :(得分:2)
matplotlib.axes.boxplot
函数实际上调用了两个函数。一个用于计算必要的统计量(cbook.boxplot_stats
),另一个用于实际绘制图(matplotlib.axes.bxp
)。您可以通过为每个数据集调用第一个数据集(通过一次加载一个数据集)来利用此结构,然后将结果提供给绘图函数。
在下面的这个例子中,我们有3个数据集并迭代它们以收集cbook.boxplot_stats
的输出(它只需要很少的内存)。之后调用ax.bxp
创建图表。 (在您的应用程序中,您将迭代加载文件,使用boxplot_stats
并删除数据)
import matplotlib.cbook as cbook
import matplotlib.pyplot as plt
import numpy as np
x = np.random.rand(10,10)
y = np.random.rand(10,10)
z = np.random.rand(10,10)
fig, ax = plt.subplots(1,1)
bxpstats = list()
for dataset, label in zip([x, y, z], ['X', 'Y', 'Z']):
bxpstats.extend(cbook.boxplot_stats(np.ravel(dataset), labels=[label]))
ax.bxp(bxpstats)
plt.show()
结果:
答案 1 :(得分:0)
一种选择是将数据的随机样本传递给绘图功能。
或者,因为boxplot只包含聚合数据,所以你应该考虑分别计算这些聚合值,然后将它们应用到boxplot可视化中。
使用documentation中的完整选项列表,您可以通过传递汇总数据来构建箱图:
boxplot(self, x, notch=False, sym='b+', vert=True, whis=1.5,
positions=None, widths=None, patch_artist=False,
bootstrap=None, usermedians=None, conf_intervals=None,
meanline=False, showmeans=False, showcaps=True,
showbox=True, showfliers=True, boxprops=None, labels=None,
flierprops=None, medianprops=None, meanprops=None,
capprops=None, whiskerprops=None, manage_xticks=True):
参见例如usermedians:
usermedians:array-like或None(默认)
第一个维度(或长度)与x兼容的数组或序列。这将覆盖matplotlib为非用户培训的每个元素计算的中位数。当usermedians的元素== None时,matplotlib将正常计算中位数。