Matplotlib:使用掩码数组绘制值

日期2011-02-01(最后修改),2006-01-22(创建)

有时,您可能会在数组中遇到“无意义”的数据。可能是因为检测器工作不正常,或者其他原因。或者您必须处理范围完全不同的数据。在这两种情况下,绘制所有值都会破坏绘图。这个简短的示例脚本解决了这个问题,并展示了使用掩码数组的一种可能的解决方案。有关参考,请参阅 matplotlib 示例中的“masked_demo.py”。

In [ ]
import numpy as np
import matplotlib.pyplot as plt

y_values = [0,0,100,97,98,0,99,101,0,102,99,105,101]
x_values = [0,1,2,3,4,5,6,7,8,9,10,11,12]

#give a threshold
threshold = 1

#prepare for masking arrays - 'conventional' arrays won't do it
y_values = np.ma.array(y_values)
#mask values below a certain threshold
y_values_masked = np.ma.masked_where(y_values < threshold , y_values)

#plot all data
plt.subplots_adjust(hspace=0.5)
plt.subplot(311)
plt.plot(x_values, y_values,'ko')
plt.title('All values')
plt.subplot(312)
plt.plot(x_values, y_values_masked,'ko')
plt.title('Plot without masked values')
ax = plt.subplot(313)
ax.plot(x_values, y_values_masked,'ko')
#for otherwise the range of x_values gets truncated:
ax.set_xlim(x_values[0], x_values[-1])
plt.title('Plot without masked values -\nwith full range x-axis')

savefig('masked_test.png')

生成的图形可能说明了这个问题 - 请注意所有三个子图中的不同比例尺

章节作者:AndrewStraw,UnuTbu

附件