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

Python画出好看的地图基于folium

[复制链接]
) H$ y# n% Z& g1 M* M3 H1 Z+ X

Choropleth 等值线图

: }8 R0 @5 _! c, t
import pandas as pd #读取数据 2 R& a- ]2 k% t Q- t from folium import Map,Choropleth,CircleMarker #用到的包 / ]- _( l1 [5 B- t
2 x; T/ L8 P, U
#包含省的中国地图json ' Z9 E% H1 _0 k7 K( y china_geo = fhttps://geo.datav.aliyun.com/areas_v2/bound/100000_full.json 7 F, G/ m& O0 b: R! l7 F$ i #读取用到的面积数据# Y' O+ X; G1 c d% c datad = pd.read_csv(Desktop/square.csv,index_col=index) 4 g3 {' u4 @: b4 B
* t2 f& |6 H+ U& M1 s
/ u! X; o1 p' m3 I' i3 x2 ~- c
m=Map(tiles=Stamen Toner) #地图风格* i6 i; J2 g* t! A+ ^# P( D 9 E/ g, |2 @) p7 j Choropleth(china_geo, #选择json 1 n" A% o( q1 s$ S data = datad, #数据 + `7 ^! E G; S9 \$ ? columns = [province,square], #列,第一个为key,第二个为value* i: F; C y5 h; @' G) t% j' k key_on = feature.properties.name,#匹配到json . f$ f9 X# G* _" B fill_color = RdPu, #颜色( }$ e; O9 T2 r+ ^ _ fill_opacity = 0.8, #填充透明度( J7 I# Y ]6 j3 F+ y6 z2 d( I line_opactity = 1, #线透明度 , W7 b; K! b/ S+ ? line_weight = 1, #线宽 U6 A1 ~) J$ n+ R) ^ legend_name = 面积 #图例 / l. `7 Q% S! S! R$ F: Q' b/ e- }5 R, _% ]* O ).add_to(m) % O2 ?$ _+ P h8 m; | CircleMarker(location = [39.907518, 116.397514], #坐标点 $ O7 Q5 c. m$ }' J9 \ radius = 10, #半径6 u4 ^- f5 L9 i& t$ F p fill = True, #填充: V3 o E: _, k/ }7 D7 O popup = This is beijing, #弹窗 5 w$ h) K- N+ d weight = 1 #circlemarker线宽 - {$ C; o7 G8 g$ ~. H% H. i3 \ ).add_to(m) 1 o7 C( P0 Q' P# \8 c5 O X m.fit_bounds(m.get_bounds()) : m; K+ m; o: P m- y" @+ O4 [4 [' `- H; c5 v
) H8 C$ U1 x( \6 N$ C3 x; T
+ j1 ^5 F, U6 ?, I

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

5 _3 A, O, M% U \- O

两个重要的网站

+ ]5 `4 P. k/ `

手动绘制geojson

3 C* K7 e/ X$ V& B2 C2 Y 2 [6 ^: f* [$ ^8 t, e, \& k6 I/ X

目前更新的geojson

; @: u$ w* m0 [, R- Y 9 K6 |. u2 Q3 Q7 `

geojson格式

2 _: f+ Y! g8 C& z/ K
{ . t, l$ y9 U& Q5 h Y "type": "FeatureCollection",6 ]' ^; O" o# y4 t, K. x7 V2 T "features": [0 T' h$ d- v- z5 v+ [ O$ w {6 {' d x5 _& S" D3 R% r) K# e "properties": {"name": "Alabama"}, 4 f% r3 n; z/ Z6 g v2 ^" E9 I9 ]' i# C "id": "AL", 9 E; V9 i6 S$ @6 d "type": "Feature", 3 I5 R0 W7 W; m" E3 A. Y9 F "geometry": {: ?& C6 ^; f$ `& q3 Y( n "type": "Polygon", # e8 U; I: e x' O6 u) L7 m5 w3 c "coordinates": [[[-87.359296, 35.00118], ...]]% }9 Y! R) `# X! c }/ f4 ~: g0 y& K& ] }, 1 C4 A0 n: B; F$ }& a; J; Q& h { ) Y& \* z* P# d* I "properties": {"name": "Alaska"},0 g* |3 o6 N, W "id": "AK",8 S/ n6 F4 e7 Q "type": "Feature", 5 f9 ]; {* d8 l( ]- R5 U$ R M "geometry": {: v+ v- O( \% K3 K "type": "MultiPolygon", ( p% b) U+ \; F) q; Y; j; h9 K; m3 d "coordinates": [[[[-131.602021, 55.117982], ... ]]]/ p4 C8 X6 S& A3 A! F, Q; M0 i } 9 w4 I& P" N( t }, 7 R S7 f+ Y8 A$ ^/ _8 b ... ; |6 [- w; [4 Z8 f ] ) u6 h& a* k% ? } * b! a4 ?, }4 E1 R" L. a
- t* h& H7 z2 u& B5 j

读取本地的json文件

& I; T/ k1 k- m: s" |, Y8 l* Z4 x
f = open(zhengzhou.json) # f- s4 u8 g4 v: y/ ] t = json.load(f), V5 r. R/ O6 `
5 p: O2 G/ h. ^4 K* ~0 Y$ b( b$ ~; \

读取网络json

+ T. P# A9 I' o5 Z& ?- x& ~- Q
url = (. m$ Z0 ]9 D9 r. x6 H8 A* Z% N "https://raw.githubusercontent.com/python-visualization/folium/master/examples/data"5 g5 K' }; h% E" z/ u ) * V- s/ r- @5 L( \ us_states = f"{url}/us-states.json"/ K# g, P5 h+ S4 f4 s1 {: r/ ^ ( ^3 k) W( r# b9 R5 S# N( n1 i. O geo_json_data = json.loads(requests.get(us_states).text) * w! T. _$ r$ R
! Q# j- F; I4 ~ e# ? , [* s# N/ @+ S + q# F# t1 O0 F + y, ?0 w! [, H' s* o$ G K9 |% ~% k: j2 @
回复

举报 使用道具

相关帖子

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