1
我有这种格式绘制世界地图上分类数据
____USA.csv____
lats, long, users
37.3264, -117.1416, 5334,
37.3264, -117.1416, 435,
现在我想告诉世界地图上对美国这一数据为5个国家的数据。 为此我尝试过。
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np
# read input csv file
filename = 'D:/22_sept_14/USA.csv'
lats=[]
lons=[]
population=[]
with open(filename) as f:
reader = csv.reader(f)
for row in reader:
lats.append(float(row[0]))
lons.append(float(row[1]))
population.append(float(row[2]))
map = Basemap(projection='robin', resolution = 'l', area_thresh = 1000.0,
lat_0=0, lon_0=-130)
map.drawcoastlines()
map.drawcountries()
map.fillcontinents(color = 'gray')
map.drawmapboundary()
map.drawmeridians(np.arange(0, 360, 30))
map.drawparallels(np.arange(-90, 90, 30))
min_marker_size = 2.5
for lon, lat,pop in zip(lons, lats, population):
x,y = map(lon, lat)
if pop>1000:
color='ro'
elif pop<1000:
color='yo'
msize = pop * .01* min_marker_size
map.plot(x, y, color, markersize=msize,alpha=.3)
plt.show()
但问题是,此方法只绘制数据在“圆”。我还想要的是用定量信息/“数字”(与数据成比例的字体大小)填充这些圆圈。我怎样才能做到这一点 ?
出于测试目的,我想包括map.plot之前这条线(在上面的代码中最后第二条)
plt.text(lon,lat,'59%',fontsize=34,fontweight='bold',ha='center',va='center',color='b')
但是,即使这并不帮助,因为只要我包括在上面一行代码,该行map.plot(x, y, color, markersize=msize,alpha=.3)
未能提供其输出。相反,我所看到的只是文本“59%”,就是这样。 我可以绘制圆形或文字(即59%)。但不是他们两个在一起。这是为什么发生?