如何仅对 MaskedArray 的非屏蔽值进行箱线图?我认为这会自动发生,boxplot(ma)
但这似乎是对非屏蔽数组进行箱线图。
问问题
2768 次
1 回答
9
我认为你是对的——plt.boxplot
如果发送一个掩码数组,则忽略掩码。所以看起来你必须boxplot
通过只发送未屏蔽的值来提供一些额外的帮助。由于数组的每一行可能有不同数量的未屏蔽值,因此您将无法使用 numpy 数组。您必须形成一个 Python 向量序列:
z = [[y for y in row if y] for row in x.T]
例如:
import matplotlib.pyplot as plt
import numpy as np
fig=plt.figure()
N=20
M=10
x = np.random.random((M,N))
mask=np.random.random_integers(0,1,N*M).reshape((M,N))
x = np.ma.array(x,mask=mask)
ax1=fig.add_subplot(2,1,1)
ax1.boxplot(x)
z = [[y for y in row if y] for row in x.T]
ax2=fig.add_subplot(2,1,2)
ax2.boxplot(z)
plt.show()
上面,第一个子图显示了所有数据的箱线图x
(忽略掩码),第二个子图仅显示了那些没有被掩码的值的箱线图。
于 2011-05-17T11:37:29.927 回答