小福利,使用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)
图片效果