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

Python画出好看的地图基于folium

[复制链接]
. K: G( ~; k. g2 g

Choropleth 等值线图

7 |1 l: g9 V6 o
import pandas as pd #读取数据 6 v& [4 g* |3 I# x1 K from folium import Map,Choropleth,CircleMarker #用到的包 , J0 g' l, x* `, _0 M% f
9 c; ~$ [* Z* g% R. X( o& X
#包含省的中国地图json 6 z6 v% n2 o# ^7 K# I china_geo = fhttps://geo.datav.aliyun.com/areas_v2/bound/100000_full.json R% |( {9 i; M9 [. e# { #读取用到的面积数据1 z! n; b/ I% w+ {! x" X datad = pd.read_csv(Desktop/square.csv,index_col=index)2 g6 t2 l; z! F1 r1 Z1 u
3 G& {; v( X& S/ ]3 { n
x" }9 z& a3 c7 x
m=Map(tiles=Stamen Toner) #地图风格 , n1 y. J3 ]" S3 Z " _9 Q9 G" H2 f- D Choropleth(china_geo, #选择json % Y- Y$ i) u1 ?" | A! P data = datad, #数据0 {; I& h! w! E6 w# Y0 v7 c columns = [province,square], #列,第一个为key,第二个为value # @! f8 d7 k3 @% D! P8 r( O key_on = feature.properties.name,#匹配到json7 i7 {1 @" O$ q# m3 f4 q fill_color = RdPu, #颜色' y. @! i! d C* }. m. @ fill_opacity = 0.8, #填充透明度 ; j4 E8 P* j9 e line_opactity = 1, #线透明度9 ^# l4 f: \9 ~. Y9 K* P) N& I% d6 f line_weight = 1, #线宽 / D% `! F5 q& U legend_name = 面积 #图例 1 o) X/ ?+ e4 x* X: d3 @5 t* k- I% p% w5 k2 y, E* {! @! m ).add_to(m) 4 ?( }' ~: q2 v( {) u0 S4 z1 m CircleMarker(location = [39.907518, 116.397514], #坐标点 - F3 J8 P; c2 E( o: ~8 b radius = 10, #半径# ~+ w! U# a# t+ V3 T2 z( j fill = True, #填充 ! U* f w4 b3 q/ M- h popup = This is beijing, #弹窗4 V, |; ~8 _$ U, f( k8 | weight = 1 #circlemarker线宽 + m) ?: ~ m/ c( |5 j ).add_to(m): M: X3 j+ ~* @ m.fit_bounds(m.get_bounds()) ; I! `7 A, l$ {7 r' [$ @ m/ w4 I) o1 X6 V; ?
! l& d! N3 X, z: h. E) l9 F P
! F: ~. [+ H3 v6 K& [

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

. \& b9 ?4 j( g) ?7 m" u" f" l

两个重要的网站

1 D# Z4 M5 C0 n- y! C3 D# U( q9 ~9 h

手动绘制geojson

[4 B8 K: l6 B( t2 i % F) v, T6 U+ L9 d2 J, M

目前更新的geojson

( W: R: E2 J' W9 S9 f2 d) N1 ]9 m: N * V' l+ x9 l2 M' ]. v

geojson格式

3 b% [/ Q6 A! U
{0 [# B5 V0 ^1 u) V9 M7 g( T7 n "type": "FeatureCollection", $ G/ j% H$ {% \+ l "features": [$ _6 U- T0 ?% r& l }& I {' K& j9 |: f1 s* R: ` "properties": {"name": "Alabama"},! F( J" N) ^1 \ c+ x( P! C0 I4 q "id": "AL",8 H4 v! J' U6 A% m' W "type": "Feature", ( b# I; z; c6 n; m "geometry": { : X0 i ?1 k# V# h5 {1 f$ p "type": "Polygon",) A3 p# F6 N, }. U) L4 b "coordinates": [[[-87.359296, 35.00118], ...]]0 G5 b+ t7 y! Z/ U& |* Y } 3 y7 B8 A7 H9 d! j" o8 l" u }, 1 _/ s" n2 |( L9 t7 X { 4 s; d3 j0 {; a/ ]& j. Q4 a+ o "properties": {"name": "Alaska"},% \ P: Z J: p. x; V8 b "id": "AK", 7 V" G& L5 j0 q' K: |8 a# ?: s "type": "Feature", 4 C# q5 d7 Z2 t& u( z- ~8 m "geometry": { 6 k1 @/ ]( P" f+ n/ v "type": "MultiPolygon", ! ]* z' k$ q" M9 a }' `& C "coordinates": [[[[-131.602021, 55.117982], ... ]]]! G# H. a$ ~7 d( {2 m }. P5 ~8 m$ U2 z }, % X: O+ q; G. V% t' K1 G ...7 M: ~. H$ y) h ]; S: I' r% ^- l h l. Q/ ~ }8 L1 i& i4 [, d; ?
! G% r& @3 S6 u5 O) g

读取本地的json文件

/ A8 L% W. O0 a. x# ^) L1 ^
f = open(zhengzhou.json): s% E% a& i+ l$ U& E K t = json.load(f) A/ k5 f2 N' t3 I5 U
2 \$ z, }+ i& J N& O+ I' U

读取网络json

9 d* k" c9 b; q/ v: l% ?
url = ( 7 X. f3 l0 O3 E: I- N4 {6 J$ ^ "https://raw.githubusercontent.com/python-visualization/folium/master/examples/data" E/ ~5 c t3 r) n( h: V ) 2 s& n+ K- t8 g3 L us_states = f"{url}/us-states.json"% {# W- q- ?# K8 I8 m& F( w! a 4 a4 w0 q' ^* o8 P" I geo_json_data = json.loads(requests.get(us_states).text)1 L1 ~9 b8 ~: N8 K6 J2 X
0 Z, S H0 X& {- f* |/ `8 ]. z . l& H r5 V. K+ H2 C" P& q+ j# M. R ! N8 D* g3 i( Y2 r/ r 1 ?! j3 p6 H# j) |' {: O
回复

举报 使用道具

相关帖子

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