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

Python画出好看的地图基于folium

[复制链接]
( N9 k% w2 }; Y

Choropleth 等值线图

L( I0 x" o! x1 Z: `
import pandas as pd #读取数据 * N5 p; ~4 F9 }2 Y from folium import Map,Choropleth,CircleMarker #用到的包$ q: u- N6 j# V) y" Q6 {, _
' Q1 U+ F$ I* C# U5 t1 u5 ]# Q
#包含省的中国地图json 7 H. _2 f0 q! X! W' J6 G china_geo = fhttps://geo.datav.aliyun.com/areas_v2/bound/100000_full.json4 W% o' E2 P# s6 R# _6 _ #读取用到的面积数据6 E6 h- L5 X+ {" P- { datad = pd.read_csv(Desktop/square.csv,index_col=index) U" H) U% v! F, n" f* ^
6 d+ y3 G/ o0 I& a. z. Z
: H0 e+ p. v+ O/ C5 t3 r
m=Map(tiles=Stamen Toner) #地图风格 7 I) W* R& w# E , n- y' _0 a ~! P8 N Choropleth(china_geo, #选择json& O$ n' Y/ t r data = datad, #数据! @4 {5 y: j" ~ columns = [province,square], #列,第一个为key,第二个为value % e% A. {. N* E! y! \/ N( ^* Q5 E% F key_on = feature.properties.name,#匹配到json 8 {( @6 z% F2 r" r: @ fill_color = RdPu, #颜色8 {( T) e3 j3 X: e, ~. B4 w fill_opacity = 0.8, #填充透明度) h4 I% [' z) }9 d' ?, L5 X% o line_opactity = 1, #线透明度% e( V, t: J5 D) b' n* J* p line_weight = 1, #线宽 : J* K) X2 [/ r) V x7 T* O legend_name = 面积 #图例 % P. _- G- j' ^, O4 ~2 O3 A; G1 E$ A# c2 a1 _% h ).add_to(m)6 E9 z8 ]: N F& ~* p1 K CircleMarker(location = [39.907518, 116.397514], #坐标点6 J* u1 j8 d; F8 g& b- O0 D radius = 10, #半径$ k h1 }/ a# i) G. W3 k fill = True, #填充 : @8 Q+ O) ^; O1 U. A9 Z popup = This is beijing, #弹窗( ]) V. B5 b. {: Z1 F weight = 1 #circlemarker线宽 ) P7 z; l+ {& K1 F: _ h4 k ).add_to(m) 9 i, y5 J2 Z0 T! D* d8 p+ z/ M m.fit_bounds(m.get_bounds()) 0 w% `- q1 w! r m& z. R1 a3 J0 U6 `& N( |$ [$ p! r7 @6 |
q, {2 @% E3 s$ R6 e
9 L$ M1 o* l* ~& n% P( o8 l! I

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

1 I9 p l' A) P" c& P

两个重要的网站

7 O! @5 a- I8 w9 U) w: d- p7 a' c3 a2 M

手动绘制geojson

+ s+ y5 w" p6 P3 ~4 a ) w/ x# k/ F$ K9 e5 S$ S

目前更新的geojson

( M; W u1 I- q; @ B , ? U$ @" M ?1 Q( t' J8 ^

geojson格式

+ A* [6 O% F0 L
{ $ d7 l. ?. c+ {( h "type": "FeatureCollection", / S3 v/ u) R6 L+ i5 c "features": [4 ]" q; N) ^& u { 5 p" s: r+ Y' p8 s5 X F "properties": {"name": "Alabama"},2 y1 t Q3 o; [) {; u "id": "AL",$ q0 G9 v2 ~6 q a9 \ "type": "Feature",/ A2 F3 |1 d7 ]: r" ` "geometry": { " z9 C2 F, V+ B "type": "Polygon",: z+ i6 _# B E8 [2 X5 v "coordinates": [[[-87.359296, 35.00118], ...]]9 _8 i0 g* a( w4 U) H0 p }, w4 B7 t: q. S$ e },4 ^- ?' W K# S& y; } { 2 \& P R- Z; J7 P# A "properties": {"name": "Alaska"},$ L& x( f& N( c. ~1 a* u "id": "AK",# `+ d8 X' o8 h" h" z: I: u& d# v "type": "Feature", * L" T, Y& I _# v "geometry": { ( g0 g' U. |' T8 v1 R0 S0 s; d7 i "type": "MultiPolygon", ! M! {; r3 F, W6 F "coordinates": [[[[-131.602021, 55.117982], ... ]]] # o" I, U; ^( Z: C- _1 F5 L Z, Y }4 q2 N$ Q% Z: D! c/ { },+ S7 o0 e: ?1 q1 U ... 7 S; j6 _9 a% y+ o, M ] 0 K# X" m0 {, r }5 D' E7 Q3 A& L+ O/ Y
7 I5 I6 z. R3 u8 j/ H8 v

读取本地的json文件

' ~# X- a& b# T* u) `% [4 U
f = open(zhengzhou.json)6 v; [% n$ _0 s# u t = json.load(f) " I7 ^8 ^& S# S% O& q
# f5 }3 M7 b; _

读取网络json

2 [3 B( ]* f/ y K% O
url = ( 8 t# @5 b7 o# ?; k: h2 T2 W "https://raw.githubusercontent.com/python-visualization/folium/master/examples/data" 2 P" E* ?9 b1 _5 \$ h8 p7 M ) # O0 [' M6 z+ \! ^, Y us_states = f"{url}/us-states.json"9 t1 u c# Q- o7 G 3 K! E' a( l% t8 b. \ geo_json_data = json.loads(requests.get(us_states).text)+ Z! G6 S7 v5 I+ u, B7 V
- k. n5 J' S/ m' ~7 L 1 k) `( h- M% B. I% l ' @6 b/ I. u& @/ G& y 5 V/ B5 e& r3 ^( c. b, r 9 t. S$ {* o3 x1 i
回复

举报 使用道具

相关帖子

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