小福利,使用python里面的basemap模块和folium模块制作可视化地图
#首先导入模块
import json,folium,requests
import mimetypes
import http.client
import pandas as pd
from folium.plugins import HeatMap
from pandas.io.json import json_normalize
#载入数据
df=pd.read_excel('D:stockdatacovid-new.xlsx')
df_confirm2=pd.read_excel('D:stockdatalocal_covid19.xlsx')
df.head() 查看数据
covid2=df.drop(columns=['编码','疫苗','日期'],axis=1)去除不需要的字段
#作图
m=folium.Map(tiles="Stamen Terrain",min_zoom=1.5)
m
country_shapes='D:stockdataworld.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 data
import numpy as np
data = (
np.random.normal(size=(100, 3)) *
np.array([[0.1, 0.1, 0.1]]) +
np.array([[47.5451, -122.3010, 1]])
).tolist()
data[:3]
# HeatMap
from folium.plugins import HeatMap
m = 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 _*_
__author__ = 'xbr'
__date__ = '2019/1/11 14:49'
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# 用来正常显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
# 用来正常显示负号
plt.rcParams['axes.unicode_minus'] = False
# 获取PM2.5数据
df = pd.read_excel(r'D:stockdata20180101PM25-CHINA.xlsx')
# 剔除无效值NAN
df = 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'2018年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")
图片效果
原文地址https://blog.csdn.net/XBR_2014/article/details/88931918
====================================
# _*_ coding: utf-8 _*_ __author__ = 'xbr' __date__ = '2019/1/9 15:47' import numpy as np import pandas as pd import folium import webbrowser from folium.plugins import HeatMap # 读取csv文件,以Dataframe形式保存 # df = pd.read_csv(r"D:stockdataPM25-20180101.csv") df = pd.read_excel(r'D:stockdata20180101PM25-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)
图片效果



