我想使用pylab绘制散点图,但是,我的一些数据是NaN这样的:
a = [1, 2, 3]
b = [1, 2, None]
Run Code Online (Sandbox Code Playgroud)
pylab.scatter(a,b) 不起作用.
有没有什么方法可以在不显示这些NaN价值的情况下绘制实际价值点?
Joe*_*ton 14
如果你使用NaNs,事情会很完美. None不是一回事.A NaN是一个浮点数.
举个例子:
import numpy as np
import matplotlib.pyplot as plt
plt.scatter([1, 2, 3], [1, 2, np.nan])
plt.show()
Run Code Online (Sandbox Code Playgroud)

如果要处理丢失的数据,请查看pandas或修复掩码数组(以及numpy.genfromtxt加载数据).蒙面数组内置于numpy中,但它pandas是一个非常有用的库,并且具有非常好的缺失值功能.
举个例子:
import matplotlib.pyplot as plt
import pandas
x = pandas.Series([1, 2, 3])
y = pandas.Series([1, 2, None])
plt.scatter(x, y)
plt.show()
Run Code Online (Sandbox Code Playgroud)
pandas使用NaNs表示屏蔽数据,而屏蔽数组使用单独的屏蔽数组.这意味着屏蔽数组可能会保留原始数据,同时暂时将其标记为"丢失"或"错误".但是,它们使用更多内存,并且通过使用NaNs来表示缺失数据,可以避免隐藏的陷阱.
另一个例子,使用掩码数组和NaNs,这次使用线图:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 6 * np.pi, 300)
y = np.cos(x)
y1 = np.ma.masked_where(y > 0.7, y)
y2 = y.copy()
y2[y > 0.7] = np.nan
fig, axes = plt.subplots(nrows=3, sharex=True, sharey=True)
for ax, ydata in zip(axes, [y, y1, y2]):
ax.plot(x, ydata)
ax.axhline(0.7, color='red')
axes[0].set_title('Original')
axes[1].set_title('Masked Arrays')
axes[2].set_title("Using NaN's")
fig.tight_layout()
plt.show()
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
10606 次 |
| 最近记录: |