Карта пузырьков - невозможно отобразить все точки из-за NaN в переменной размера

Я хочу создать пузырьковую карту, чтобы показать, сколько морского мусора было собрано (т.е. моя третья переменная) в каждой из моих координат. Я также хочу показать пузыри заданного размера и цвета для координат, для которых отсутствует значение третьей переменной. Моя четвертая переменная - это количество участников на каждом мероприятии по уборке пляжа, и это будет цвет точек, для которых у меня есть значение переменной размера.

Используя свой код, я могу построить точки с третьими значениями переменных, но те, у которых нет, не отображаются.

Есть ли способ построить график моих значений и NaN без замены NaN на конкретное значение?

Мне не удалось найти никаких ранее заданных вопросов по этому поводу. Кажется, что люди обычно хотят удалить точки с помощью nan, а не рисовать их. Это будет полезно для всех, кто хочет построить события известного размера и одновременно показать события неизвестного размера, которые также имели место.

Мой код с некоторыми примерами:

from mpl_toolkits.basemap import Basemap
%matplotlib inline

lat = [69.234128, 69.244113, 69.281377]
lon = [15.867903, 16.119887, 15.973608]
kg = [nan, 120, 80]
participants = [1, 30, 100]

fig = plt.figure(figsize=[12,15]) 
map = Basemap(llcrnrlon = 15.39,
              urcrnrlon = 16.27, 
              llcrnrlat = 68.8, 
              urcrnrlat = 69.35, 
              resolution = 'f', 
              projection = 'lcc', 
              lat_0 = 69.1, 
              lon_0 = 15.8)

map.drawmapboundary(fill_color='xkcd:baby blue')
map.fillcontinents(color='gray', lake_color='xkcd:baby blue')
map.drawcoastlines()

for i in kg:
    if i == 'nan':
        map.scatter(lon, lat, latlon = True, zorder = 3,
                    s = 50,
                    linewidth = 0.5,
                    edgecolor = 'k',
                    c = 'k',
                    alpha = 0.5)
    else:
         map.scatter(lon, lat, latlon = True, zorder = 2,
           s = kg,
           linewidth = 0.5,
           edgecolor = 'k',
           c = participants,
           cmap = 'Blues',
           alpha = 0.5)

Я пробовал эти варианты:

if i is None
if i == None
if i is NaN
if i == NaN
if i is 'NaN'
if i == 'NaN'
if i is nan
if i == nan
if i is 'nan'
if i == 'nan'

Варианты без "" приводят к сообщению об ошибке, в котором говорится, что имя NaN не указано.

Я также пробовал использовать кг для цвета и участников для размера, но до сих пор не получил черных точек одинакового размера на карте.

Что я должен делать?


person Ingrid    schedule 07.03.2019    source источник
comment
Вы спрашиваете Как я могу проверить значения NaN?   -  person Andrew Morton    schedule 07.03.2019
comment
Нет, потому что я знаю, что у меня есть значения NaN и какие они есть. Я хочу иметь возможность использовать их / нанести на карту. Или программа должна проверять значения NaN, чтобы их можно было использовать?   -  person Ingrid    schedule 07.03.2019
comment
Да, программа должна проверять значения NaN, чтобы иметь возможность их использовать.   -  person Andrew Morton    schedule 07.03.2019
comment
Оооо, понятно, понятно. Итак, если я сначала проверю их, я смогу использовать, если я - NaN, или есть другой термин, который мне нужно использовать?   -  person Ingrid    schedule 07.03.2019
comment
Строка if i == 'nan': должна быть больше похожа на if math.isnan(i): для проверки.   -  person Andrew Morton    schedule 07.03.2019
comment
Великолепно, спасибо вам большое!   -  person Ingrid    schedule 07.03.2019
comment
Вы можете использовать numpy maskedarray, чтобы избежать нежелательных значений при построении графика.   -  person swatchai    schedule 07.03.2019
comment
Вы можете перефразировать свой вопрос так, чтобы не фокусироваться how to check the NaN value, и опубликовать его как новый вопрос.   -  person swatchai    schedule 07.03.2019