$ l4 d7 T; a5 E0 a g
Choropleth 等值线图
0 X1 @* z8 d/ Y! i; ~7 G# n U- A7 r import pandas as pd #读取数据/ o" \: S- m6 j
from folium import Map,Choropleth,CircleMarker #用到的包: S( Z) J7 C3 @0 [+ F) ?
. f: ~/ }4 f/ c6 @2 Q
#包含省的中国地图json! i) X5 }+ h4 \1 m8 x# T' J
china_geo = fhttps://geo.datav.aliyun.com/areas_v2/bound/100000_full.json
5 { @5 }( T2 V1 ?# Z5 q+ u( \6 d4 L #读取用到的面积数据9 Y, ~( q# S% M+ b7 X
datad = pd.read_csv(Desktop/square.csv,index_col=index)# q2 D- ?" G1 w$ T$ T7 S
4 H; j. d, J" G G$ }8 O. A
7 i) u, y8 B P2 B/ q# m5 r* x m=Map(tiles=Stamen Toner) #地图风格
6 Q9 D. j: r8 s& h0 S2 p0 ?' s A5 ^. F& a( P- d1 n( T. `
Choropleth(china_geo, #选择json9 X* g# l3 N' D3 u# K- r3 N& c5 f: H
data = datad, #数据7 ?0 l8 R" k% @+ Z
columns = [province,square], #列,第一个为key,第二个为value+ z, [5 D/ e+ _% J6 r3 U* Z
key_on = feature.properties.name,#匹配到json
) Q$ f7 q6 @% k0 S6 f fill_color = RdPu, #颜色
( c8 `- D5 N0 C( F* I- W fill_opacity = 0.8, #填充透明度9 F0 l$ N+ H! V) x0 V G" l1 Q9 f
line_opactity = 1, #线透明度
# c) _9 G% j5 G; k" E, C line_weight = 1, #线宽/ ^+ q) {. ?# H
legend_name = 面积 #图例
- P- N7 w5 n" B
/ H' s9 T: N9 N' w2 c: C0 ] ).add_to(m), B b; C/ |6 x3 B
CircleMarker(location = [39.907518, 116.397514], #坐标点( ? V# n9 J G. ~8 ^% B, o' P
radius = 10, #半径
- w0 n9 _! U# ~$ T/ |" Z fill = True, #填充
0 z4 w' a6 ]0 o3 D# M! O popup = This is beijing, #弹窗- X+ k U0 c& e. ?3 K7 {
weight = 1 #circlemarker线宽 + A' Z! f. N1 m h# Z \$ `
).add_to(m)
1 Y6 W; e N; N m.fit_bounds(m.get_bounds())7 {/ R% Y' k( ^7 y
m
8 t+ ~: g8 F# r0 D2 G( O
; U+ }: ~- T$ a* m8 S+ S; C9 W; S . _: X7 E& w, i% d; d9 `
数据地址: square.rar - 蓝奏云
/ ?, e: R& ?8 d2 v' L8 M/ x 两个重要的网站
) r! D; m: Q. }( W 手动绘制geojson ; u. k, F# f1 d
. H# w1 j: N# P. a, q/ h# u; ^2 p' l 目前更新的geojson ; D4 D, c/ s# t3 q2 O
" K2 ~. K2 d/ t/ y, J geojson格式 8 m$ A$ Q* Y4 j' N
{% A, p1 K8 a/ e. B( D
"type": "FeatureCollection",
3 ^! ^- H) j2 ]+ k% c "features": [
+ ?- r( A% C* W* }& x' E9 \0 z {: {9 o- F- t2 O/ D
"properties": {"name": "Alabama"},2 Z; L! u) |3 X1 @+ }% J9 W! x
"id": "AL",0 b* y* c1 T1 Q2 y. d& N. f8 O+ a1 I
"type": "Feature", @8 i' [+ z; Q7 f3 h
"geometry": {4 S ~' ~) q$ n: r P/ e
"type": "Polygon",
% K- I B) _& t: t$ G "coordinates": [[[-87.359296, 35.00118], ...]]
# e9 h: W. s: D% J5 I }
1 ]+ u& H0 `& ~0 C7 G },0 W& e3 n0 l2 W% W9 a) ^: H2 s0 t# I
{. F' {% W+ o0 S
"properties": {"name": "Alaska"},# m g7 F H. E; e/ j8 L; b
"id": "AK",$ X) R1 ^5 o; q$ Z" t
"type": "Feature",
0 u8 G: x* ^5 ? ?8 j "geometry": {
2 B) A# M: h& k: ]+ c- `. S: b, N "type": "MultiPolygon",
5 A; J6 u. D4 x; m8 q "coordinates": [[[[-131.602021, 55.117982], ... ]]]/ N/ `* Q; E6 ]
}
( a# K8 r6 F- Y8 \7 C1 B },
- Q. V- { k* Y! V9 P3 y ...' r: D& D0 M$ y; o
]
! V4 Y, U+ Z, Z3 n' h6 s! o! A/ ^# r }
# @( y5 f4 [. |7 u! B 9 q* q( q. n& E" x/ d2 R
读取本地的json文件
. s K# D% [% ?; b' B- C f = open(zhengzhou.json)% P5 ]# v [# @" ~9 g/ y1 i
t = json.load(f)
* E+ ?; T/ A# F, {' ?& L& ~$ u0 o* e! A
1 ^8 N& X. M l) B' k% L 读取网络json
' X: N) k- ~6 D url = (: u, S: j1 | B/ d/ ?; p
"https://raw.githubusercontent.com/python-visualization/folium/master/examples/data"
2 X* U9 U* I% K )! c# B3 c: g( y$ N) o0 E$ ~7 r
us_states = f"{url}/us-states.json"
$ \6 k2 O& o/ f. B% \, Q }
, m1 N0 D2 z6 u$ X, z- d5 N: `7 k geo_json_data = json.loads(requests.get(us_states).text)
; a3 p/ f% @% ^ c$ I# _
* v1 y* P% K; L" w
9 R* {# c% |& ^* Z) h" f0 _. P4 J+ i! n- x6 I# e- W
1 `! j* h) c$ }( ]6 r% |. m8 k% d& Q* o \2 I5 M, e
|