Python画出好看的地图基于folium

[复制链接]
0 Q4 q. Z" q; H! w

Choropleth 等值线图

0 b, J- Y/ Y! E
import pandas as pd #读取数据 ]# f: C" p1 ~- j8 { P4 k3 A from folium import Map,Choropleth,CircleMarker #用到的包 - N6 e: P! X) h& J
/ B4 F& p- G! g9 a
#包含省的中国地图json; @5 Y& ?( [0 z& m china_geo = fhttps://geo.datav.aliyun.com/areas_v2/bound/100000_full.json5 d; `# d3 o: Q7 T, l7 `" \ #读取用到的面积数据 i) Y) d4 F1 A% Y2 |, f datad = pd.read_csv(Desktop/square.csv,index_col=index)& y4 w$ p% T% O7 ^
" K4 U0 ]7 F- y, F
# Y+ P& ]- l9 E% ^ y' P
m=Map(tiles=Stamen Toner) #地图风格 1 U) s* v. r' O# ?. R* a7 y# n7 F8 n# t* C& p' T. b: F! _ Choropleth(china_geo, #选择json% m, P' H' R& F data = datad, #数据 8 w3 j" ]) F1 `+ ^* n+ U columns = [province,square], #列,第一个为key,第二个为value 6 ?3 a9 w0 s( b, h) Z9 d key_on = feature.properties.name,#匹配到json % g9 P% z; p* r% ~3 b fill_color = RdPu, #颜色 6 q* I. r: @( I! w3 Y( f fill_opacity = 0.8, #填充透明度 9 x2 z7 D0 l2 p2 I, D& w; y line_opactity = 1, #线透明度0 _/ D6 L: L" v; v' B1 C6 m line_weight = 1, #线宽 ; M) j# c# h% o# x# g& p( l legend_name = 面积 #图例 I; Z* d2 z/ P6 e- `, k! O4 B 3 u7 q; X& o3 ~* C1 |% d ).add_to(m), E# A* Y, Z, d- E CircleMarker(location = [39.907518, 116.397514], #坐标点& z' z8 z& Q7 Q/ j radius = 10, #半径) N2 P8 l: ]5 M6 S fill = True, #填充 . y, a# i( q: j popup = This is beijing, #弹窗% s2 ` s2 M$ B1 R+ E2 I5 \ weight = 1 #circlemarker线宽 ! B5 W) g" n4 E7 o ).add_to(m) @2 ]+ n2 h4 U- g4 J' a7 j m.fit_bounds(m.get_bounds()) " ~! X. q8 G& ~6 c. Y9 v m 6 ~- r k) r. U, D% L T
, _" |$ U% Q2 H* T/ H9 c
5 A. X/ ~# S* T2 J: i

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

3 j3 t+ W3 m& v4 n

两个重要的网站

9 B! D; o2 f) i- s2 w

手动绘制geojson

% i% v3 [' e# C$ O A ! G. `; z, k, I1 b+ J5 t

目前更新的geojson

8 m1 s+ m3 {5 e; g. O ( {( |! R0 X- @2 D1 g3 r

geojson格式

/ L. H3 B. G$ `, B( N9 k1 e R
{9 i* |7 U }" Y. ?; l "type": "FeatureCollection",9 L! X1 j9 z5 y- t1 {1 B "features": [ * ~6 @* r5 y) j G3 t9 T7 w$ @8 ? {' A+ s$ X" {7 \ "properties": {"name": "Alabama"}, / w* Z" P1 _/ U) k% Q "id": "AL",4 ~1 ?0 K+ g- c4 j+ { "type": "Feature", $ B' }* S" ]9 O, `4 P. n" @: S "geometry": { ; j" }8 K* D4 F3 m "type": "Polygon", $ F* x) \8 @' `' t8 N "coordinates": [[[-87.359296, 35.00118], ...]]! H" @4 O" @$ z }7 @4 g) F0 C8 ]. z" l# L* H& y }, 7 Y+ Q2 h5 B" j- j {3 f" \4 d+ R$ B; K "properties": {"name": "Alaska"},& e7 k3 _* G3 m0 U7 L "id": "AK", ' ~9 q9 p8 h( q# } "type": "Feature", $ f) P' ?. D, B$ T. ^; o& R; u "geometry": {! M: ]# N6 c2 Q6 n3 E) t "type": "MultiPolygon", / H' y9 n5 I8 K "coordinates": [[[[-131.602021, 55.117982], ... ]]] 2 n" E' n5 e/ [5 h }% n' o! m" M% H: I) Y },! o3 y" _% @: @$ K( P' Z+ w ...* Z% l& u5 E/ E0 i ], {! H, c& i1 c6 ]2 f* Y+ ] } 3 P3 C" G; r, r h( h4 Y
" ^. O5 K( }: K, }% g9 g |# D6 n

读取本地的json文件

3 Q$ J& M) \6 F5 b4 u6 j4 U+ Y9 M
f = open(zhengzhou.json)& F2 y3 M* J2 V' i t = json.load(f)1 H) H- R0 ?. x$ d' N U/ b
+ q, M3 t( r. D5 O" P& k( y

读取网络json

. W/ {; t1 T4 c4 R
url = ( # [0 q: `3 }1 E "https://raw.githubusercontent.com/python-visualization/folium/master/examples/data"1 q/ b# a' ?) _6 O )" A$ p& |) L" R% Q; h us_states = f"{url}/us-states.json" i$ Q+ x5 o2 u9 m0 b% z 8 T( t* M% t4 F geo_json_data = json.loads(requests.get(us_states).text) & i% Z C6 } U1 H3 }; @
6 z9 |0 }/ u; i0 [' L, @$ w7 q ; e" c: X' E" C* A9 ~2 _$ n; I9 l( V% z6 a7 M3 D) A * C2 ^, O: q) p0 ?9 I4 X* h; ?/ [' R: N' K/ @

相关帖子

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