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

33 篇文章 3 订阅

小福利,使用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:\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 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 _*_



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:\stockdata\20180101PM25-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 _*_


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:\stockdata\PM25-20180101.csv")
df = pd.read_excel(r'D:\stockdata\20180101PM25-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)

图片效果
在这里插入图片描述

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值