& t$ v9 r( H; q- n# f Choropleth 等值线图; l" L+ H9 T, y8 |. _: h7 V3 m
import pandas as pd #读取数据4 c; r; y0 t) w+ |! G8 A- N
from folium import Map,Choropleth,CircleMarker #用到的包
$ J, x$ f0 K! T5 P# Q3 M/ h! K
7 l) @; d; s* L# } #包含省的中国地图json* w2 i5 f( @& Y4 f
china_geo = fhttps://geo.datav.aliyun.com/areas_v2/bound/100000_full.json
0 v! D! l% \8 z. \' t; H2 ? #读取用到的面积数据
% K4 a* i8 a: b% @ p7 X datad = pd.read_csv(Desktop/square.csv,index_col=index)# Y" ?$ p+ J6 |
# I( e0 x* q S3 p" R- R
, W% K* P% v( _ m=Map(tiles=Stamen Toner) #地图风格
( _2 y1 o K$ I4 ~2 k0 }. K. n9 k$ Z
; z* K* H' x# s3 q+ B# A* b8 ` Choropleth(china_geo, #选择json
8 a8 p! `" m: X% i: X- f data = datad, #数据. p& }- T/ k+ p% L1 C
columns = [province,square], #列,第一个为key,第二个为value- j) j0 \# B/ ]; q
key_on = feature.properties.name,#匹配到json
5 d1 d7 e: M* d1 s fill_color = RdPu, #颜色# u) {4 E. r+ o8 H5 }
fill_opacity = 0.8, #填充透明度
" y8 S6 P0 i' ~9 `/ Q line_opactity = 1, #线透明度 F0 B9 Y& u5 I" W+ K% j
line_weight = 1, #线宽. ^! p1 ~7 P/ i0 f$ o# B
legend_name = 面积 #图例& D1 e1 Q6 O' J% H! W+ O
1 u' }7 g' f9 ~. t. O7 v
).add_to(m)1 p. M5 e8 o8 L2 w t1 h. I5 _
CircleMarker(location = [39.907518, 116.397514], #坐标点* |/ Z/ L7 l) c8 i0 ?5 v; L3 W* k# |
radius = 10, #半径' @" W9 w( t/ p0 G4 z
fill = True, #填充
7 t e2 M$ O9 k) G9 W" C0 P popup = This is beijing, #弹窗
8 s, S) l4 a' t+ j weight = 1 #circlemarker线宽 ' Y/ _6 y& @3 K) h3 b6 a
).add_to(m)# n/ H3 N \1 F- X& ?0 }0 G `
m.fit_bounds(m.get_bounds())
' V: ^3 v" t: d1 s- d, j% Z7 m m
4 p, I" | V! E) w. H
) G. y2 ~& S: M9 C% I! B M ' d+ p4 F$ @, }4 c# T3 V# H
数据地址: square.rar - 蓝奏云 0 u8 Z t' S# X. P, F: y s
两个重要的网站
5 ?4 }5 J7 ~( D7 F9 e 手动绘制geojson
: A# Q" F2 e w. Y; a; h, h
. I5 O1 C& Q r7 I9 K: w4 u 目前更新的geojson
' V6 H) Q9 Z, B, I8 t
' T$ x9 L! ^, q% w9 k% L( r geojson格式 3 g; r0 N; z6 F3 }) o
{( e8 s' q, c* q5 y2 J3 }
"type": "FeatureCollection",
: ~) P, Y2 `( M8 T$ { "features": [( K* x( e- w4 z) Q
{
& \5 `+ b( J( W* I "properties": {"name": "Alabama"},
# ?% e* m( y+ }& E4 H. v "id": "AL",
( G; u& ]' P$ C5 W( |* e! Y "type": "Feature",$ b6 D p! \" `' P0 K* z
"geometry": {" z( z9 z9 U5 }" D
"type": "Polygon",
. Q6 n& I5 ^/ `- }9 i1 K( D "coordinates": [[[-87.359296, 35.00118], ...]]3 V, o- Z6 M( a
}- a! j. w1 p- K' I: s, B" y# }; l
},' ]8 I# W% I' ]3 v" p8 V# w4 ~
{
4 S7 V! c C( c; z) H7 _ "properties": {"name": "Alaska"},
; \ W% ?, B5 b F# J "id": "AK",4 ?6 C0 G/ P0 j* w1 y& j- w
"type": "Feature",) J7 n! T% n% P4 M
"geometry": {
( g( U3 T$ ]1 G- \. D) F "type": "MultiPolygon",7 {" {9 X9 X8 x) \& X) O% d
"coordinates": [[[[-131.602021, 55.117982], ... ]]]
2 j9 o8 J" H6 t3 ]' Y6 K' i }
) d8 ?% F7 z# W4 { },
2 e/ K2 W) \1 V6 {8 y/ I ...
6 ~+ S/ E) P& D2 x# u/ N$ U9 P; @) ~" P- ` ]
1 {+ P$ u3 ?9 P( ]5 g @2 H3 S2 E% ~ }/ i5 Y8 [7 M' h+ [( x0 p
: u, a4 W6 K) ~: p7 b n$ e$ ]% \
读取本地的json文件
: n0 l) d$ \; S3 j0 [9 A& g f = open(zhengzhou.json)1 J y7 H( a/ F
t = json.load(f)& i; v/ w/ d" p
% ~: `, t9 b2 q; o; T8 ~ 读取网络json
* D+ J2 W1 ~& V* W5 D url = ( } l. [" h- V& Y9 c+ E4 I
"https://raw.githubusercontent.com/python-visualization/folium/master/examples/data", \7 J6 D& R Y0 C$ R$ J" E8 H5 A3 r
)
+ e8 k9 ?& \" Q& \' A7 T- u) `+ | us_states = f"{url}/us-states.json"
: q$ ~8 E! W" v( x* ~2 U* R2 V0 r3 Y0 F1 h
geo_json_data = json.loads(requests.get(us_states).text)! k1 ^! r" u$ r. a
$ w* x) b( m8 P& V' J# |
/ V) Y$ A* `' a5 d, s& F5 O3 ~
* `) v' k# k' _ ^
- z! g1 q( }" y; R
) u( ?4 Z+ A8 |+ a1 P |