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

Python画出好看的地图基于folium

[复制链接]
4 W) y$ N3 q- x. b' g2 z1 U& l

Choropleth 等值线图

- S2 `! t) H7 I& C( K# D& Z
import pandas as pd #读取数据 0 b8 _2 }) [) ^+ a from folium import Map,Choropleth,CircleMarker #用到的包 1 G, i. r, s) \% P% q
/ V' I$ q$ R& U; q
#包含省的中国地图json 9 R: r' _3 m7 n" n china_geo = fhttps://geo.datav.aliyun.com/areas_v2/bound/100000_full.json : g9 ^1 v9 r. k+ d6 i0 T3 Q #读取用到的面积数据1 i+ P) G" b3 g) Q1 Z! T datad = pd.read_csv(Desktop/square.csv,index_col=index)2 C& g. ?( n9 U- B; S
9 q$ y1 _$ Y4 `- Q _3 o+ ~
7 A' }7 g/ q* Z I" ], `6 g5 j% Y
m=Map(tiles=Stamen Toner) #地图风格' j8 p0 r2 g8 v1 D/ K 3 H4 H% ~/ d8 e2 ^1 ^, d Choropleth(china_geo, #选择json 0 Z6 ?0 |0 t6 Z data = datad, #数据( n* n! X1 m6 z- B3 `' h( A columns = [province,square], #列,第一个为key,第二个为value, W* W# M6 _) }7 k- A6 h c key_on = feature.properties.name,#匹配到json $ \) ~5 W- p6 u `3 u2 W; U% A0 a- T* R fill_color = RdPu, #颜色 6 g3 S! Q- c2 k: N! G8 _ fill_opacity = 0.8, #填充透明度 8 r. Q2 Y, t$ l line_opactity = 1, #线透明度/ q+ l2 x& ?! Z! h' L& e4 z! H7 r2 u line_weight = 1, #线宽 0 K9 x/ C W- ^* B3 y legend_name = 面积 #图例$ N9 E X3 N0 e8 S6 \) P) X8 N * k4 s; B+ t/ C) `! j: j% H ).add_to(m) & R! o# N' X0 L/ Y# D CircleMarker(location = [39.907518, 116.397514], #坐标点; ]5 ~# h% X% F' u: c radius = 10, #半径8 j* X8 H/ Z1 |7 A fill = True, #填充7 ]/ c# s+ c- O! ], r popup = This is beijing, #弹窗 6 _) l* q) `2 u6 v# C; W weight = 1 #circlemarker线宽 0 O+ j$ {( J; L( ?* j# q' ^ ).add_to(m)! a2 O: k; e6 | Q: m; j* q m.fit_bounds(m.get_bounds())( j. }: r+ n' Z! j m% R M9 B) W1 e
, [" E3 v( ?, n8 q" Z) Z; Y
2 N& M4 F: b7 ^. K! h; U, S( t! h

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

$ w8 q0 Y! W0 U& D

两个重要的网站

8 z: X# k# m0 {& O. j

手动绘制geojson

& Y0 L$ P, R4 c( \" ], `: N ( G4 e. e; [! }0 u

目前更新的geojson

" J) p8 }% y; d+ S$ C# L9 g 7 r/ ^+ T" a( k

geojson格式

. l8 i: ^ t( N. Z. h
{% i5 K" H8 s8 w: U/ N4 y+ X "type": "FeatureCollection",6 m( s q3 P3 r8 W! g "features": [2 r2 y6 {4 N- M { " Y5 W1 N4 l& k% T. }" l* } "properties": {"name": "Alabama"},! D8 ?: s4 K% D; I, } "id": "AL", 9 t0 q5 P) q J8 ]& K5 X2 F, x2 t3 { "type": "Feature", 1 U0 \9 A) j3 n7 G4 W1 ^: y "geometry": { / j( l" J( E( V2 P% b5 R "type": "Polygon", 1 g/ a$ l2 J1 J3 q2 j9 q6 B+ h; ^ "coordinates": [[[-87.359296, 35.00118], ...]]& Q+ m$ C; K8 l3 M0 K6 p. v" l1 T8 Y }$ T# c; ]% n; Q( k. ^0 m }, & A& C5 ^. x% z0 X, w; ]7 F {% `9 C; X/ b. F; l# C! S "properties": {"name": "Alaska"}, ' n* _0 E" {* }9 x& F/ q h "id": "AK",' y: W5 V) N4 f! E: k2 ^$ o "type": "Feature", 3 K. P1 |& j0 w, q- i "geometry": { - D% S/ n, N9 V6 x" y B "type": "MultiPolygon", ! Z7 l0 ?4 A# x9 i. f "coordinates": [[[[-131.602021, 55.117982], ... ]]] 5 X' ]0 \8 i9 B3 K v }( _# q V" d2 U/ N3 \ }, / E, e1 E3 q7 y& \' { ...# r4 s( E! F0 ~$ I L0 s" F5 | ]" t6 r0 s* s/ ?* ]; c } 3 L b9 u9 ~" E# z6 x
2 B5 n: C9 o+ P Z2 B7 B% T

读取本地的json文件

; h+ b- u8 O6 H4 o% I
f = open(zhengzhou.json)1 [5 U2 v) k' a t = json.load(f) ; l) r/ Y* I; d8 Q0 n; R" N
/ p, _' B. V+ T- c& C& t' w

读取网络json

" M+ I( z- m8 A/ W7 k) K; x
url = (( u0 p2 C' {7 x6 m7 k- \ "https://raw.githubusercontent.com/python-visualization/folium/master/examples/data": d' L+ i" T2 i, r ) U1 W9 L! [3 Z' Q; t us_states = f"{url}/us-states.json"! X5 J. {0 B" D- ] ! q) d0 g: P- Y3 _3 K( z4 ~9 l1 j geo_json_data = json.loads(requests.get(us_states).text) + {5 U B4 X/ s
% W1 z. @# [( k" T ( I8 `; C7 F; l3 m: Q$ U+ r, [ ) K% Z! b" `' ]) M& ]/ a) J5 S. Q5 \" l8 f " X, i% Q6 J7 B
回复

举报 使用道具

相关帖子

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