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()
假设我创建了三个列表:
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()