" a5 P) x' a8 s Choropleth 等值线图5 \# J% R9 o/ W5 S
import pandas as pd #读取数据" j+ D5 W" M/ L1 S4 g# X
from folium import Map,Choropleth,CircleMarker #用到的包
6 a% x) l7 {% }, k* ]) c
) W" g* N! g: f- Y0 E #包含省的中国地图json
7 F! k' L. D- N china_geo = fhttps://geo.datav.aliyun.com/areas_v2/bound/100000_full.json1 r5 f' j( f( \ B' d
#读取用到的面积数据
N2 L6 c$ v5 J; w( i datad = pd.read_csv(Desktop/square.csv,index_col=index)
) M( K# V3 y. V, o: Q- s; o$ z. b
1 F5 e) M q/ s+ j. K; x
6 C( \0 w. U" E6 ^% ^+ @ m=Map(tiles=Stamen Toner) #地图风格
2 @( I# V9 [8 y8 t: N
3 B( \. y# L% t$ Q' j( ~, z Choropleth(china_geo, #选择json
0 n, ?% |( C2 `( m+ m" M8 j B& J data = datad, #数据
2 X( c; W Q9 Q* j* s/ I columns = [province,square], #列,第一个为key,第二个为value0 W! J4 f( ^4 {/ t! d- O& M2 {0 p
key_on = feature.properties.name,#匹配到json( G a/ u7 Y5 y* n
fill_color = RdPu, #颜色
0 g6 p4 Q( J# ~ fill_opacity = 0.8, #填充透明度* J7 c8 K1 n- @4 l/ u- K% P
line_opactity = 1, #线透明度) N+ x& t0 }) D, k
line_weight = 1, #线宽
* }) { \7 Z$ M7 @. @2 o, J legend_name = 面积 #图例
1 L _1 J& @! C6 Z9 w7 m% I/ @
0 h6 c( d& K' r o& `0 }9 z ).add_to(m)
' g* X4 H# G) T$ B- X- Z# B CircleMarker(location = [39.907518, 116.397514], #坐标点
5 j1 p* Z1 t8 t# Y radius = 10, #半径$ w; ?7 _( k( t2 J0 b P
fill = True, #填充
/ X8 n+ l3 u( _! h5 [# G* P popup = This is beijing, #弹窗
4 R9 ~- S F* @* f weight = 1 #circlemarker线宽
5 [2 ^: t9 V* N ).add_to(m). H$ s( L- _& {; D8 H3 p
m.fit_bounds(m.get_bounds())
" t; }2 l) M( Y# z- L- {' R m
" ?- S9 M; g6 P) W
9 H6 O7 ?1 w* p# F8 X. d! w5 y0 d & ]2 c, a% v6 T/ \4 h: p
数据地址: square.rar - 蓝奏云 9 z9 N1 i8 }. p# s$ e
两个重要的网站
7 |* T( U: g9 u, O& T* i, ?! r 手动绘制geojson 4 x/ i2 e0 J) g* T, [2 o, _1 J
1 {! R! B7 x" c3 t5 x
目前更新的geojson - G5 v% @9 j- l( O& ]
4 [: q+ j' b- d" D4 y geojson格式 . C% ?: a8 F8 D* _7 ]/ w6 K3 X
{
. c$ ]! }3 M& t "type": "FeatureCollection",) r+ S+ Y1 H Y' f: W# U0 s& E% i
"features": [: A |, ]( i* |- E! C' X" `
{
# y2 h% J5 M3 |9 [% i "properties": {"name": "Alabama"},
8 D! n' L& B% \4 j$ M2 q' p "id": "AL"," i$ Y5 m. _! v4 N1 C
"type": "Feature",0 q1 B9 K% J1 e$ n) ~3 y
"geometry": {& U. f8 y# C. \: f# @4 w
"type": "Polygon",1 m" w! ^4 i/ W2 ?$ U o
"coordinates": [[[-87.359296, 35.00118], ...]]
* @" M8 B$ S: N$ |. Z' |- |$ B0 O }
" a2 h' V* ~$ c+ b8 T6 } },
% z" w' D% |/ n1 Z9 u0 C {, v6 `* _- p) F% z3 z8 F* o, I
"properties": {"name": "Alaska"},4 Q$ I" q0 Z" U( B% O! v f# k
"id": "AK",
. W/ Y _6 y8 Q- E/ N; S7 I' m "type": "Feature",; P# u' v8 S6 a# }0 i! P5 ?
"geometry": {
' E+ a2 Y8 n9 Z1 N' _0 f2 L# _ "type": "MultiPolygon",; y0 l# g3 f: J- {* @
"coordinates": [[[[-131.602021, 55.117982], ... ]]]
1 ]' H. n% y& a3 O6 b7 A8 ] }
+ r V4 F- m- D/ X( ~ },) G' S ?. ], G8 }% b
...
* E0 o/ w! n5 A7 I& C$ ]+ o ]
4 j, Z4 [; a. \8 f: |' n, X5 e }
" M! }- x3 u3 l0 Z l
0 z6 Y: r6 z5 g+ c( S7 F 读取本地的json文件 1 W7 Z; L1 I/ O, V+ S
f = open(zhengzhou.json)8 Q0 L( _; d% c& f7 g( P) F
t = json.load(f)
' q: B, |+ C/ G
- U+ K% D, @# |9 J. m2 i1 h0 F# r 读取网络json 4 o, H+ v" b' u8 W8 f& m/ ^
url = () W' g6 m; b& |1 I
"https://raw.githubusercontent.com/python-visualization/folium/master/examples/data"
3 S$ a! g) S/ d: p )6 d# e& n) j$ m% Z! R/ ^
us_states = f"{url}/us-states.json"+ N' ~& n/ \( \2 C+ [& r! @# T
& Q& N0 \; Y1 _/ z' x geo_json_data = json.loads(requests.get(us_states).text)3 y) _2 O6 J* f# P
, F0 ?) Z# f6 o# y3 L
* F/ {6 j# h7 Z% s8 P
2 J! b! `) j5 i, Z5 d( I" I2 u0 z! \# D& Y8 p) p% q, s
1 B! B X1 X; w. J+ K |