Python Точечная диаграмма не работает с точками "None" - PullRequest
1 голос
/ 06 мая 2020

Допустим, я создаю три списка:

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

Как я могу разбросать это и просто включить только точки с числами (т.е. исключить точку «нет»). Когда я включаю эти списки, мой код не создает диаграмму рассеяния (однако, когда я включаю число вместо «Нет», это работает):

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()

Ответы [ 3 ]

1 голос
/ 06 мая 2020

Вы можете сделать

import numpy as np

и заменить None на np.nan. Точки, содержащие np.nan, не будут нанесены на диаграмму рассеяния. См. this matplotlib do c для получения дополнительной информации.

Если у вас есть длинные списки, содержащие None, вы можете выполнить преобразование с помощью

array_containing_nans = np.array(list_containing_nones, dtype=float)
0 голосов
/ 06 мая 2020

Вы должны использовать NaNs вместо None, что не одно и то же. A 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()
0 голосов
/ 06 мая 2020

вы можете использовать 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...