' i7 q; ^# X- ~ Choropleth 等值线图
& l/ p' I* D( F ]! c import pandas as pd #读取数据( S1 s" G) L" G5 R
from folium import Map,Choropleth,CircleMarker #用到的包4 n1 Y7 Q* G4 @, G/ ^, l2 K! W$ k
4 J' m3 |6 {: z: V E6 P* _! I #包含省的中国地图json, p8 W; J) w& T0 [
china_geo = fhttps://geo.datav.aliyun.com/areas_v2/bound/100000_full.json2 O/ `/ q' w; p8 i- j
#读取用到的面积数据
) ^/ @ G1 C5 U5 H. f datad = pd.read_csv(Desktop/square.csv,index_col=index): E) d8 G# B7 G% j# g% v
6 `( l4 c9 V" P$ {9 g1 L5 B
7 H6 w3 z8 ~5 M$ b' O: `! R
m=Map(tiles=Stamen Toner) #地图风格
3 r7 J9 q+ a0 l+ I
; ^7 I; X2 d6 M" N7 f Choropleth(china_geo, #选择json
: k0 d2 ?) L1 V, L' v data = datad, #数据
4 V& V9 P; ]! X6 [( r! g1 R7 o& q+ a columns = [province,square], #列,第一个为key,第二个为value0 e e9 c) \6 J9 S# ?& d
key_on = feature.properties.name,#匹配到json
- Z& n5 d9 Q3 `6 M: h% ~! w fill_color = RdPu, #颜色8 x; z; f9 Q; z# v5 ?0 v9 R
fill_opacity = 0.8, #填充透明度$ R. _& L$ N8 b& k* |
line_opactity = 1, #线透明度
' t1 p* `$ ^3 p7 b line_weight = 1, #线宽
$ P! w& o, T+ u. ?% B legend_name = 面积 #图例8 M, V9 j; S+ i [# ?1 |* k
6 N3 v" J" G1 F5 D; I ).add_to(m): u) r1 @" K% V& ^* b
CircleMarker(location = [39.907518, 116.397514], #坐标点
, I9 v- H, V0 f( L; L radius = 10, #半径
2 X& T( g L$ s/ G fill = True, #填充
% X1 d5 F s6 m& `. k9 N; u popup = This is beijing, #弹窗
: o" C8 I# k' F& k% u- ]( { weight = 1 #circlemarker线宽
; ]1 N# W) d) V& Q9 L ).add_to(m)) a3 M# h1 K! ~2 a% b
m.fit_bounds(m.get_bounds())/ E9 k; X7 \0 N# L/ C
m, Y0 o4 s! \$ x: T1 V( d
1 [' F6 ]$ W% h- o* p
" ]+ f3 _# t f" u1 H# v8 [ 数据地址: square.rar - 蓝奏云 ' e! T; T! E, w9 N1 b5 \$ Y/ K
两个重要的网站
, T( \& F% a' F8 K 手动绘制geojson
( u7 x, i, x1 b, r7 @9 L4 I ]4 W
2 y5 ]5 \9 S( l9 D. d6 q D; D8 E 目前更新的geojson 5 t; m \/ A- x# A4 Z6 ]% ^# W
! `# }! B3 t# Z: p9 m! Z8 Y2 F# {
geojson格式
0 ^1 X* m! k' x8 y* A6 }6 ?5 R7 c; X {5 v& Z8 } L4 v3 `" f1 Q
"type": "FeatureCollection",! z7 u( b$ w/ {. U: a
"features": [2 {- r; w! r) ?- X
{
% }% m! b$ w# e+ ?* B, [) w- Q% V "properties": {"name": "Alabama"},: C0 m# h! d+ q' \
"id": "AL",( p6 {$ [* c7 |. h: v$ h
"type": "Feature",
* C& K' z4 w z3 w" b9 l% D "geometry": {
, S' S- ]# q0 o% Y( o "type": "Polygon",4 [, O/ l5 J( j
"coordinates": [[[-87.359296, 35.00118], ...]]( m+ E( ?# j% ` s \& g+ f4 B
}
* o* f, m' c, O \7 ]2 ? },
0 y# H" z" z. Y { f/ G3 O$ i$ `( v
"properties": {"name": "Alaska"},
3 K- G: \& e1 j) U9 ^ "id": "AK",
5 `9 p$ U8 A$ }0 o0 l "type": "Feature",
1 ~/ K' o- ~- \" G "geometry": {( m. H3 e; [9 \
"type": "MultiPolygon",- d& r- k0 L; L! f9 _* p! G; u. \
"coordinates": [[[[-131.602021, 55.117982], ... ]]]" X" ^1 J! f& [
}
" g% m% ]0 [# E- r },7 ^2 J+ {6 w1 S w. a5 A5 R
...
: A7 a+ G9 z1 a# Y& D3 h ]; J/ R: ]7 I! x( _8 R* l+ r7 T
}" o2 X2 I( D& n* l; p% y
$ K" i3 X7 A" b9 p; c2 z5 g7 W/ h
读取本地的json文件
- h, c0 t: d6 c. }9 P4 T f = open(zhengzhou.json)
: n$ ?) j6 }, g+ J' o t = json.load(f)
# `5 F+ j, K A4 a! A + J2 p. i+ a: j! c: m2 @5 F/ d
读取网络json
3 ?/ m4 c R, b3 X# y url = (' t3 k; W3 H, ^* f7 @
"https://raw.githubusercontent.com/python-visualization/folium/master/examples/data"- b: U" U% F; f% K
)5 C/ K7 d& r, O+ T- `
us_states = f"{url}/us-states.json"0 h7 @# s6 V: I2 y6 z* r
$ N/ l1 j+ ]' f
geo_json_data = json.loads(requests.get(us_states).text)0 e/ C2 |6 R1 B, h6 Y
$ Y& e0 v. i0 {4 g. |: [
% c; u' f/ y7 R. u) X" t0 b; [, E* c* U; O2 A- f$ o) P
+ o: a8 H9 }$ ~& A/ a" _# g3 ]# @9 `& _# ~& g! ^3 S# U) p, `
|