收藏本站 劰载中...网站公告 | 吾爱海洋论坛交流QQ群:835383472

Python画出好看的地图基于folium

[复制链接]
" a5 P) x' a8 s

Choropleth 等值线图

5 \# J% R9 o/ W5 S
import pandas as pd #读取数据" j+ D5 W" M/ L1 S4 g# X from folium import Map,Choropleth,CircleMarker #用到的包 6 a% x) l7 {% }, k* ]) c
) W" g* N! g: f- Y0 E
#包含省的中国地图json 7 F! k' L. D- N china_geo = fhttps://geo.datav.aliyun.com/areas_v2/bound/100000_full.json1 r5 f' j( f( \ B' d #读取用到的面积数据 N2 L6 c$ v5 J; w( i datad = pd.read_csv(Desktop/square.csv,index_col=index) ) M( K# V3 y. V, o: Q- s; o$ z. b
1 F5 e) M q/ s+ j. K; x
6 C( \0 w. U" E6 ^% ^+ @
m=Map(tiles=Stamen Toner) #地图风格 2 @( I# V9 [8 y8 t: N 3 B( \. y# L% t$ Q' j( ~, z Choropleth(china_geo, #选择json 0 n, ?% |( C2 `( m+ m" M8 j B& J data = datad, #数据 2 X( c; W Q9 Q* j* s/ I columns = [province,square], #列,第一个为key,第二个为value0 W! J4 f( ^4 {/ t! d- O& M2 {0 p key_on = feature.properties.name,#匹配到json( G a/ u7 Y5 y* n fill_color = RdPu, #颜色 0 g6 p4 Q( J# ~ fill_opacity = 0.8, #填充透明度* J7 c8 K1 n- @4 l/ u- K% P line_opactity = 1, #线透明度) N+ x& t0 }) D, k line_weight = 1, #线宽 * }) { \7 Z$ M7 @. @2 o, J legend_name = 面积 #图例 1 L _1 J& @! C6 Z9 w7 m% I/ @ 0 h6 c( d& K' r o& `0 }9 z ).add_to(m) ' g* X4 H# G) T$ B- X- Z# B CircleMarker(location = [39.907518, 116.397514], #坐标点 5 j1 p* Z1 t8 t# Y radius = 10, #半径$ w; ?7 _( k( t2 J0 b P fill = True, #填充 / X8 n+ l3 u( _! h5 [# G* P popup = This is beijing, #弹窗 4 R9 ~- S F* @* f weight = 1 #circlemarker线宽 5 [2 ^: t9 V* N ).add_to(m). H$ s( L- _& {; D8 H3 p m.fit_bounds(m.get_bounds()) " t; }2 l) M( Y# z- L- {' R m " ?- S9 M; g6 P) W
9 H6 O7 ?1 w* p# F8 X. d! w5 y0 d
& ]2 c, a% v6 T/ \4 h: p

数据地址: square.rar - 蓝奏云

9 z9 N1 i8 }. p# s$ e

两个重要的网站

7 |* T( U: g9 u, O& T* i, ?! r

手动绘制geojson

4 x/ i2 e0 J) g* T, [2 o, _1 J 1 {! R! B7 x" c3 t5 x

目前更新的geojson

- G5 v% @9 j- l( O& ] 4 [: q+ j' b- d" D4 y

geojson格式

. C% ?: a8 F8 D* _7 ]/ w6 K3 X
{ . c$ ]! }3 M& t "type": "FeatureCollection",) r+ S+ Y1 H Y' f: W# U0 s& E% i "features": [: A |, ]( i* |- E! C' X" ` { # y2 h% J5 M3 |9 [% i "properties": {"name": "Alabama"}, 8 D! n' L& B% \4 j$ M2 q' p "id": "AL"," i$ Y5 m. _! v4 N1 C "type": "Feature",0 q1 B9 K% J1 e$ n) ~3 y "geometry": {& U. f8 y# C. \: f# @4 w "type": "Polygon",1 m" w! ^4 i/ W2 ?$ U o "coordinates": [[[-87.359296, 35.00118], ...]] * @" M8 B$ S: N$ |. Z' |- |$ B0 O } " a2 h' V* ~$ c+ b8 T6 } }, % z" w' D% |/ n1 Z9 u0 C {, v6 `* _- p) F% z3 z8 F* o, I "properties": {"name": "Alaska"},4 Q$ I" q0 Z" U( B% O! v f# k "id": "AK", . W/ Y _6 y8 Q- E/ N; S7 I' m "type": "Feature",; P# u' v8 S6 a# }0 i! P5 ? "geometry": { ' E+ a2 Y8 n9 Z1 N' _0 f2 L# _ "type": "MultiPolygon",; y0 l# g3 f: J- {* @ "coordinates": [[[[-131.602021, 55.117982], ... ]]] 1 ]' H. n% y& a3 O6 b7 A8 ] } + r V4 F- m- D/ X( ~ },) G' S ?. ], G8 }% b ... * E0 o/ w! n5 A7 I& C$ ]+ o ] 4 j, Z4 [; a. \8 f: |' n, X5 e } " M! }- x3 u3 l0 Z l
0 z6 Y: r6 z5 g+ c( S7 F

读取本地的json文件

1 W7 Z; L1 I/ O, V+ S
f = open(zhengzhou.json)8 Q0 L( _; d% c& f7 g( P) F t = json.load(f) ' q: B, |+ C/ G
- U+ K% D, @# |9 J. m2 i1 h0 F# r

读取网络json

4 o, H+ v" b' u8 W8 f& m/ ^
url = () W' g6 m; b& |1 I "https://raw.githubusercontent.com/python-visualization/folium/master/examples/data" 3 S$ a! g) S/ d: p )6 d# e& n) j$ m% Z! R/ ^ us_states = f"{url}/us-states.json"+ N' ~& n/ \( \2 C+ [& r! @# T & Q& N0 \; Y1 _/ z' x geo_json_data = json.loads(requests.get(us_states).text)3 y) _2 O6 J* f# P
, F0 ?) Z# f6 o# y3 L * F/ {6 j# h7 Z% s8 P 2 J! b! `) j5 i, Z5 d( I" I2 u0 z! \# D& Y8 p) p% q, s 1 B! B X1 X; w. J+ K
回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
华德地毯
活跃在2026-4-5
快速回复 返回顶部 返回列表