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

Python画出好看的地图基于folium

[复制链接]
' i7 q; ^# X- ~

Choropleth 等值线图

& l/ p' I* D( F ]! c
import pandas as pd #读取数据( S1 s" G) L" G5 R from folium import Map,Choropleth,CircleMarker #用到的包4 n1 Y7 Q* G4 @, G/ ^, l2 K! W$ k
4 J' m3 |6 {: z: V E6 P* _! I
#包含省的中国地图json, p8 W; J) w& T0 [ china_geo = fhttps://geo.datav.aliyun.com/areas_v2/bound/100000_full.json2 O/ `/ q' w; p8 i- j #读取用到的面积数据 ) ^/ @ G1 C5 U5 H. f datad = pd.read_csv(Desktop/square.csv,index_col=index): E) d8 G# B7 G% j# g% v
6 `( l4 c9 V" P$ {9 g1 L5 B
7 H6 w3 z8 ~5 M$ b' O: `! R
m=Map(tiles=Stamen Toner) #地图风格 3 r7 J9 q+ a0 l+ I ; ^7 I; X2 d6 M" N7 f Choropleth(china_geo, #选择json : k0 d2 ?) L1 V, L' v data = datad, #数据 4 V& V9 P; ]! X6 [( r! g1 R7 o& q+ a columns = [province,square], #列,第一个为key,第二个为value0 e e9 c) \6 J9 S# ?& d key_on = feature.properties.name,#匹配到json - Z& n5 d9 Q3 `6 M: h% ~! w fill_color = RdPu, #颜色8 x; z; f9 Q; z# v5 ?0 v9 R fill_opacity = 0.8, #填充透明度$ R. _& L$ N8 b& k* | line_opactity = 1, #线透明度 ' t1 p* `$ ^3 p7 b line_weight = 1, #线宽 $ P! w& o, T+ u. ?% B legend_name = 面积 #图例8 M, V9 j; S+ i [# ?1 |* k 6 N3 v" J" G1 F5 D; I ).add_to(m): u) r1 @" K% V& ^* b CircleMarker(location = [39.907518, 116.397514], #坐标点 , I9 v- H, V0 f( L; L radius = 10, #半径 2 X& T( g L$ s/ G fill = True, #填充 % X1 d5 F s6 m& `. k9 N; u popup = This is beijing, #弹窗 : o" C8 I# k' F& k% u- ]( { weight = 1 #circlemarker线宽 ; ]1 N# W) d) V& Q9 L ).add_to(m)) a3 M# h1 K! ~2 a% b m.fit_bounds(m.get_bounds())/ E9 k; X7 \0 N# L/ C m, Y0 o4 s! \$ x: T1 V( d
1 [' F6 ]$ W% h- o* p
" ]+ f3 _# t f" u1 H# v8 [

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

' e! T; T! E, w9 N1 b5 \$ Y/ K

两个重要的网站

, T( \& F% a' F8 K

手动绘制geojson

( u7 x, i, x1 b, r7 @9 L4 I ]4 W 2 y5 ]5 \9 S( l9 D. d6 q D; D8 E

目前更新的geojson

5 t; m \/ A- x# A4 Z6 ]% ^# W ! `# }! B3 t# Z: p9 m! Z8 Y2 F# {

geojson格式

0 ^1 X* m! k' x8 y* A6 }6 ?5 R7 c; X
{5 v& Z8 } L4 v3 `" f1 Q "type": "FeatureCollection",! z7 u( b$ w/ {. U: a "features": [2 {- r; w! r) ?- X { % }% m! b$ w# e+ ?* B, [) w- Q% V "properties": {"name": "Alabama"},: C0 m# h! d+ q' \ "id": "AL",( p6 {$ [* c7 |. h: v$ h "type": "Feature", * C& K' z4 w z3 w" b9 l% D "geometry": { , S' S- ]# q0 o% Y( o "type": "Polygon",4 [, O/ l5 J( j "coordinates": [[[-87.359296, 35.00118], ...]]( m+ E( ?# j% ` s \& g+ f4 B } * o* f, m' c, O \7 ]2 ? }, 0 y# H" z" z. Y { f/ G3 O$ i$ `( v "properties": {"name": "Alaska"}, 3 K- G: \& e1 j) U9 ^ "id": "AK", 5 `9 p$ U8 A$ }0 o0 l "type": "Feature", 1 ~/ K' o- ~- \" G "geometry": {( m. H3 e; [9 \ "type": "MultiPolygon",- d& r- k0 L; L! f9 _* p! G; u. \ "coordinates": [[[[-131.602021, 55.117982], ... ]]]" X" ^1 J! f& [ } " g% m% ]0 [# E- r },7 ^2 J+ {6 w1 S w. a5 A5 R ... : A7 a+ G9 z1 a# Y& D3 h ]; J/ R: ]7 I! x( _8 R* l+ r7 T }" o2 X2 I( D& n* l; p% y
$ K" i3 X7 A" b9 p; c2 z5 g7 W/ h

读取本地的json文件

- h, c0 t: d6 c. }9 P4 T
f = open(zhengzhou.json) : n$ ?) j6 }, g+ J' o t = json.load(f) # `5 F+ j, K A4 a! A
+ J2 p. i+ a: j! c: m2 @5 F/ d

读取网络json

3 ?/ m4 c R, b3 X# y
url = (' t3 k; W3 H, ^* f7 @ "https://raw.githubusercontent.com/python-visualization/folium/master/examples/data"- b: U" U% F; f% K )5 C/ K7 d& r, O+ T- ` us_states = f"{url}/us-states.json"0 h7 @# s6 V: I2 y6 z* r $ N/ l1 j+ ]' f geo_json_data = json.loads(requests.get(us_states).text)0 e/ C2 |6 R1 B, h6 Y
$ Y& e0 v. i0 {4 g. |: [ % c; u' f/ y7 R. u) X" t0 b; [, E* c* U; O2 A- f$ o) P + o: a8 H9 }$ ~& A/ a" _# g3 ]# @9 `& _# ~& g! ^3 S# U) p, `
回复

举报 使用道具

相关帖子

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