1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 小福利 使用python里面的basemap模块和folium模块制作可视化地图

小福利 使用python里面的basemap模块和folium模块制作可视化地图

时间:2019-09-24 06:52:00

相关推荐

小福利 使用python里面的basemap模块和folium模块制作可视化地图

小福利,使用python里面的basemap模块和folium模块制作可视化地图

#首先导入模块import json,folium,requestsimport mimetypesimport http.clientimport pandas as pdfrom folium.plugins import HeatMapfrom pandas.io.json import json_normalize#载入数据df=pd.read_excel('D:\stockdata\covid-new.xlsx')df_confirm2=pd.read_excel('D:\stockdata\local_covid19.xlsx')df.head() 查看数据covid2=df.drop(columns=['编码','疫苗','日期'],axis=1)去除不需要的字段#作图m=folium.Map(tiles="Stamen Terrain",min_zoom=1.5)m

country_shapes='D:\stockdata\world.json'folium.Choropleth(geo_data=country_shapes,min_zoom=2,name='covid-19',data=df,columns=['Country','累计确诊'],fill_color='OrRd',nan_fill_color='black',legend_name='累计确诊',).add_to(m)m

这里将数据加载到图片上,就可以让不同的区域显示不同的颜色,这里缺少世界地图的json数据,还有经纬度数据,所以展示效果不好。

下面模拟一些坐标数据,做一个热力图展示。

# generated dataimport numpy as npdata = (np.random.normal(size=(100, 3)) *np.array([[0.1, 0.1, 0.1]]) +np.array([[47.5451, -122.3010, 1]])).tolist()data[:3]# HeatMapfrom folium.plugins import HeatMapm = folium.Map([47.5451, -122.3010], tiles='stamentoner', zoom_start=6)HeatMap(data).add_to(m)# m.save(os.path.join('results', 'Heatmap.html'))m

=====================================

小福利,用python里面的basemap模块做可视化图片

# _*_ coding: utf-8 _*_from mpl_toolkits.basemap import Basemapimport matplotlib.pyplot as pltimport pandas as pdimport numpy as np# 用来正常显示中文plt.rcParams['font.sans-serif'] = ['SimHei']# 用来正常显示负号plt.rcParams['axes.unicode_minus'] = False# 获取PM2.5数据df = pd.read_excel(r'D:\stockdata\0101PM25-CHINA.xlsx')# 剔除无效值NANdf = df.dropna(axis=0, how='any')lat = np.array(df["lat"][:]) # 获取维度之维度值lon = np.array(df["lon"][:]) # 获取经度值PM25 = np.array(df["PM25"][:], dtype=float)# 画图fig = plt.figure(figsize=(16, 9))plt.rc('font', size=15, weight='bold')ax = fig.add_subplot(111)# 添加标题,PM2.5下标设置plt.title(u'01月01日中国地区$\mathrm{PM}_{2.5}$质量浓度分布', size=25, weight='bold')# 创建底图,等经纬度投影mp = Basemap(llcrnrlon=73., llcrnrlat=17.,urcrnrlon=135., urcrnrlat=55,projection='cyl', resolution='h')# 添加海岸线mp.drawcoastlines()# 添加国家行政边界mp.drawcountries()# 设置colorbar中颜色间隔个数levels = np.linspace(0, np.max(PM25), 20)# cf = mp.scatter(lon, lat, PM25, marker='o', color='r')# 设置颜色表示数值大小cf = mp.scatter(lon, lat, PM25, c=PM25, cmap='jet', alpha=0.75)# 设置上下标以及单位的希腊字母cbar = mp.colorbar(cf, location='right', format='%d', size=0.3,ticks=np.linspace(0, np.max(PM25), 10),label='$\mathrm{PM}_{2.5}$($\mu$g/$\mathrm{m}^{3}$)')plt.show()fig.savefig("first.png")

图片效果

原文地址/XBR_/article/details/88931918

====================================

# _*_ coding: utf-8 _*_import numpy as npimport pandas as pdimport foliumimport webbrowserfrom folium.plugins import HeatMap# 读取csv文件,以Dataframe形式保存# df = pd.read_csv(r"D:\stockdata\PM25-0101.csv")df = pd.read_excel(r'D:\stockdata\0101PM25-CHINA.xlsx')# 获取数据个数num = df.shape[0]# 获取纬度lat = np.array(df["lat"][0:num])# 获取经度lon = np.array(df["lon"][0:num])# 获取PM2.5,转化为numpy浮点型pm25 = np.array(df["PM25"][0:num], dtype=float)# 将数据制作成[lats, lons, weights]的形式data1 = [[lat[i], lon[i], pm25[i]] for i in range(num)]# 绘制Map,中心经纬度[32, 120],开始缩放程度是5倍map_osm = folium.Map(location=[32, 120], zoom_start=5)# 将热力图添加到前面建立的map里HeatMap(data1).add_to(map_osm)file_path = r"D:\AirQualityMap.html"# 保存为html文件map_osm.save(file_path)# 默认浏览器打开webbrowser.open(file_path)

图片效果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。