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

Python画出好看的地图基于folium

[复制链接]
8 `- q8 H8 N$ k( o8 o1 K( o

Choropleth 等值线图

9 {0 s- d% x: d! ?+ z
import pandas as pd #读取数据 p% G( ~0 V9 w; \, r9 j# H from folium import Map,Choropleth,CircleMarker #用到的包 5 y: X; W/ [# @# X
4 g7 D. \ M) {9 O* z
#包含省的中国地图json) x3 V8 U+ Y* v/ {4 n( U& V2 i" B. B china_geo = fhttps://geo.datav.aliyun.com/areas_v2/bound/100000_full.json" ^; f% ~$ O c2 N u1 G" ?; f- {* l #读取用到的面积数据& D! v! o5 D; K' e* K/ B U datad = pd.read_csv(Desktop/square.csv,index_col=index) 2 ?7 O7 f5 G+ x4 Y. \
0 l! |8 ^. _ D% C2 B
- h0 H& ]- e: k* b- X& l
m=Map(tiles=Stamen Toner) #地图风格 2 M2 C8 S. {. J/ ]) s8 \% ^# L: |2 T1 ?- t& x6 \4 L9 p Choropleth(china_geo, #选择json % X) o1 H* _ D data = datad, #数据6 _ v3 }- v- H8 D" @ columns = [province,square], #列,第一个为key,第二个为value ( b: s# h" u. k E+ i key_on = feature.properties.name,#匹配到json % ?2 f9 I6 q9 |0 }. k E8 t fill_color = RdPu, #颜色1 m0 P4 M' q* {& N$ B. ~2 H fill_opacity = 0.8, #填充透明度 2 t, U$ x c7 R4 p. M line_opactity = 1, #线透明度, X7 ^. q8 O) ~ line_weight = 1, #线宽; a# A9 S1 W$ q# L- _ legend_name = 面积 #图例 ! A; x" B! ^" ` ?" ?" p9 N6 ~6 h# ^7 M: p; N. X( t- G1 [1 W/ W9 M ).add_to(m) * L8 a; X( W" j CircleMarker(location = [39.907518, 116.397514], #坐标点 1 H8 s2 q& I. p0 w5 S1 a4 s radius = 10, #半径# z& j5 n* [4 k* R3 ]& R fill = True, #填充 2 c0 E! ?" O. E popup = This is beijing, #弹窗" e; }8 f6 w# f: X! W) x weight = 1 #circlemarker线宽 # Z1 p7 C7 ?/ v7 ?: k6 T ).add_to(m)/ J, B6 m8 N5 E3 w; Y) ^0 O m.fit_bounds(m.get_bounds())& O) y+ p( L6 u1 W( m0 C! \3 N m: \) Y! v" r$ {8 j
1 ]0 j* r* K# [1 [' Y0 v7 k* D$ [
! s$ z$ o( V4 U6 I

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

' @6 m" n8 G/ Y. c) P6 ~& w

两个重要的网站

: E1 f* ], A2 `! k

手动绘制geojson

* j' d5 g+ k7 z/ ] 6 C3 Y* p& B3 k& K3 t `

目前更新的geojson

2 `! o% i8 F! u6 `! N- S - m& g4 G/ D* ~4 U

geojson格式

r" P( e0 i2 S: W! C, o' h" t
{# y! }: x& M$ G8 a$ n2 U. b. E "type": "FeatureCollection", , T' e8 ?3 K8 M6 K3 o) Q m( M "features": [, J+ e. Y, B R& P- s4 q {! Z8 x) R; F$ o1 v% a" @0 s$ q- R "properties": {"name": "Alabama"}, : e: r6 M$ X9 u9 a" l1 j "id": "AL",: q7 g% _" B2 O* _4 s "type": "Feature", & {& G3 ]* K/ s- s) i# ? "geometry": { 2 {3 t- ~. f3 c; r0 j% X4 k z "type": "Polygon", $ `$ g9 O: I3 p% \. p B "coordinates": [[[-87.359296, 35.00118], ...]] ! q" I6 z! V/ r) u1 `" E } & A! L: a! I% b) u },: r" P* c7 k6 U, J3 G! a# s/ m) _ {' n$ z; m; w# _$ ]2 M s "properties": {"name": "Alaska"},9 e/ d! X1 q- f% ~ "id": "AK", . D- r5 J5 n, V# I "type": "Feature", + k( V; c0 W* A# V "geometry": { 7 N, W$ P. I& s; N/ M; ]( o# Y "type": "MultiPolygon",9 ?$ @ v# g% v "coordinates": [[[[-131.602021, 55.117982], ... ]]] ( i- l8 S a6 U9 q* }! p$ O } ; D5 W! Z. G0 C) O, l p+ m0 t }, ! S% [, R4 h; L) r! O7 u1 C ... + {+ B" K# k* z9 F8 X ] + h" N/ W+ q' y } u2 d3 k% x: y0 {0 a8 F
5 h1 B1 h5 q& C8 X( h5 }

读取本地的json文件

; l: F% C( `0 {! E) x/ c9 f
f = open(zhengzhou.json) : p5 E8 r0 K6 f/ m$ P& T t = json.load(f)8 {) R1 p; @- ^- n# j% k0 F4 d
3 A' b" d& k! e, p

读取网络json

4 r; @+ Z9 x" Q! `/ c
url = (7 C) Q, x6 p# y/ H9 r7 A "https://raw.githubusercontent.com/python-visualization/folium/master/examples/data" 5 A g. ?, x- j. Q! S ) & Z2 { C3 S! |" b+ ` us_states = f"{url}/us-states.json" ' r6 z. b3 d% n4 |' \) c z! [! _2 N geo_json_data = json.loads(requests.get(us_states).text)0 I1 q$ T8 p: ]5 B) X2 \
. V' c X9 I8 [ Z4 Q% ?% x) w; }, W1 ~: m' ~6 O& e9 Z $ x' D* N9 v9 W5 a; {1 B3 d! H # z: ?4 a& W I6 d( I0 H5 ?, }) R4 N6 R1 D% W. `7 J
回复

举报 使用道具

相关帖子

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