底图:绘制包含国家/地区的世界地图,并绘制包含数据的气泡


I am trying to create a world map in background and bubble on top of it to show the data. I am using code below to create it but this gives a map in background with out country names and plane circle which doesnt show the location of country.

进口大熊猫作为PD 从 mpl_toolkits.底图导入底图 import matplotlib.pyplot as plt

# Set the dimension of the figure
my_dpi=10
plt.figure(figsize=(2600/my_dpi, 1800/my_dpi), dpi=my_dpi)
# read the data (on the web)

# Make the background map
m=Basemap(llcrnrlon=-180, llcrnrlat=-65,urcrnrlon=90,urcrnrlat=80)
m.drawmapboundary(fill_color='#A6CAE0', linewidth=0)
m.fillcontinents(color='grey', alpha=0.3)
m.drawcoastlines(linewidth=0.1, color="white")
# prepare a color for each point depending on the continent.
#data['labels_enc'] = pd.factorize(data['homecontinent'])[0]
# Add a point per position
m.scatter(conversion_comparison['Res'],conversion_comparison['Sea'],
          s=1000, alpha=1.0, c=colors)

包含转化率数据的数据帧

数据conversion_comparison数据帧:

Country         Sea     Res  ConvRate(%)    Country_codes   
Spain           6179    85      1.38                ES  
United Kingdom  495     99      2.00                GB  
France          473     12      2.55                FR  
United States   442     7.8     1.76                US  
Italy           358     7.4     2.07                IT  
Germany         153     3.3     2.15                DE  
Argentina       135     1.9     1.41                AR  
Ireland         132     3.3     2.49                IE  
Belgium         122     4.3     3.51                BE  
Israel          109     2.2     1.82                IL  
I want bubbles to have country code and converson rate and size of bubble based on conversion rate value

请建议需要对代码进行修改才能创建地图。我还附加了图像以使最终输出看起来像。

[Output i am getting][1]
  [1]: https://i.stack.imgur.com/XagnV.png
[output i want][2]  
[2]: https://i.stack.imgur.com/PVFX6.jpg

仍然无法完全回答您的问题,因为您的示例不太可行,但关键在于您对m.scatter的调用,它缺乏国家坐标并且没有传递气泡的正确大小。

首先,您需要的是数据集中所有国家/地区的纬度/纬度坐标列表 - 这里有另一个 StackOverflow 问题,它提供了一些获取此坐标的选项。

然后,您需要将这些坐标合并到现有数据集中。假设您已成功执行此操作,并且坐标位于数据集的列latlon中,则可以按如下方式调用m.scatter

m.scatter(conversion_comparison['lat'],conversion_comparison['lon'],
      s=conversion_comparison['ConvRate(%)'], alpha=1.0, c=colors)

如果您还想向气泡添加标签,则可以执行以下操作:

labels = conversion_comparison.Country.values 
    for label, xpt, ypt in zip(labels, conversion_comparison.lon.values, conversion_comparison.lat.values):
        plt.annotate(label, xy=m(xpt, ypt), xycoords="data", backgroundcolor="w",
                    xytext=(1,1), textcoords='offset points') 

(您可能需要稍微调整一下上面的偏移量(

相关内容

  • 没有找到相关文章

最新更新