Python 散点图不适用于 "None" 点

Python Scatter plot not working with "None" points

假设我创建了三个列表:

x=[1,2,3]
y=[4,5,6]
z=[1,None,4]

我怎样才能分散这个并且只包含带数字的点(即排除 "none" 点)。当我包含这些列表时,我的代码不会生成散点图(但是当我包含一个数字而不是 "None" 时它起作用):

from mpl_toolkits import mplot3d
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

%matplotlib notebook


fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')


ax.scatter(x, y, z, c='r', marker='o')



plt.show()

你可以做到

import numpy as np

并用 np.nan 替换你的 None。包含 np.nan 的点不会绘制在您的散点图中。有关详细信息,请参阅 this matplotlib doc

如果您有包含 None 的长列表,您可以通过

执行转换
array_containing_nans = np.array(list_containing_nones, dtype=float)

您可以使用 numpy.nan 而不是 None

import numpy as np
z=[1,None,4]
z_numpy = np.asarray(z, dtype=np.float32)

.... 

ax.scatter(x, y, z_numpy, c='r', marker='o')

您应该使用 NaNs 而不是 None,这不是一回事。 NaN 是一个浮点数。

最小示例

import numpy as np
import matplotlib.pyplot as plt

x=[1,2,3]
y=[4,5,6]
z=[1,np.nan,4]

plt.scatter(x,y,z)
plt.show()