气泡图-由于大小变量为NaN而无法绘制所有点

时间:2019-03-07 08:52:50

标签: python-3.x nan scatter-plot matplotlib-basemap bubble-chart

我想创建一个气泡图,以显示在每个坐标处收集了多少海洋垃圾(即我的第三个变量)。我还想显示缺少第三个变量值的坐标的设置大小和颜色的气泡。我的第四个变量是每次海滩清洁活动的参与者人数,将是我具有大小变量值的点的颜色。

使用我的代码,我可以绘制具有第三个变量值的点,但没有显示这些点。

是否可以在不用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。

我也尝试过使用kg作为颜色,使用参与者作为尺寸,但在地图上仍然没有得到尺寸一致的黑点。

我该怎么办?

0 个答案:

没有答案