我如何只能绘制MaskedArray的非遮罩值?我认为这会由boxplot(ma)
自动发生,但这似乎是对非屏蔽数组进行封装。
答案 0 :(得分:6)
我认为你是对的 - 如果发送了一个蒙面数组,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
中所有数据的箱线图(忽略了掩码),第二个子图显示了仅未被屏蔽的那些值的箱线图。