" g7 O8 ^( [. p/ `# Y" g6 o: @1 r
Choropleth 等值线图
" _* U8 Y# d5 }8 u import pandas as pd #读取数据% r: `* `! A8 m, G9 X' r
from folium import Map,Choropleth,CircleMarker #用到的包( J# N' s3 K0 A" H {6 M6 V$ ~
/ w( S4 D( j; {$ d# {3 a
#包含省的中国地图json' }" `! `* w, y+ p
china_geo = fhttps://geo.datav.aliyun.com/areas_v2/bound/100000_full.json2 f( x+ ]% w; V# H
#读取用到的面积数据& C: w8 K8 e2 ]8 }6 l0 e3 {
datad = pd.read_csv(Desktop/square.csv,index_col=index): W9 c/ f/ n7 r1 G
5 v1 L8 o9 k' ~2 ]
) I4 n9 b; | G+ g
m=Map(tiles=Stamen Toner) #地图风格
% |, H) k0 a' Q9 I
5 M6 L1 B/ K7 m, ?* ~9 l8 @) Z8 a Choropleth(china_geo, #选择json
+ p$ n4 v5 O8 R8 o9 t1 d data = datad, #数据
7 y/ q+ {& c$ n& w1 h columns = [province,square], #列,第一个为key,第二个为value
r' T9 z; T2 R9 X. c$ U; s key_on = feature.properties.name,#匹配到json; E+ F% N Q. B9 S
fill_color = RdPu, #颜色6 b, Q) C5 m' z0 j3 A0 N: k: }
fill_opacity = 0.8, #填充透明度
, B9 D" q' e* M+ R( c3 y line_opactity = 1, #线透明度
2 @0 ]' `* q, W ^, [ line_weight = 1, #线宽
( `. n+ M$ M, n: z' e! Q legend_name = 面积 #图例
( q& s2 x* \# p: ^: A
7 i+ ~' J, W; K+ S ).add_to(m)1 i) ?, A' h- Y. H: k' h" u& g# k
CircleMarker(location = [39.907518, 116.397514], #坐标点$ l: G0 ]- B4 [0 O) D+ e3 W
radius = 10, #半径
6 E( E5 `: @! ~( s# d. [ fill = True, #填充) h( n d3 H7 }; c
popup = This is beijing, #弹窗
, _9 ?- U. E! U, U. W: l weight = 1 #circlemarker线宽
* X7 f/ F0 k8 J ).add_to(m)
/ T* [5 X' D: o0 l) ^% b# ~9 A m.fit_bounds(m.get_bounds())
* I2 p6 L. Q, f0 R3 }1 v m& S9 f! g5 Y' W c
# N1 s# h; w% c% O+ I
; `- v2 b* S2 c0 s- S, h+ E 数据地址: square.rar - 蓝奏云 * y( Q7 r. U. x6 |6 `7 s7 S, {& z
两个重要的网站 K* r; @7 ~6 E9 K2 F6 |/ E+ V
手动绘制geojson 4 b( R# i1 `$ a% C
0 _3 V. Y x B 目前更新的geojson
2 m0 H1 a; [ ~+ v: Y
+ r7 V4 C, ?5 {2 r geojson格式
7 o/ M% q1 o( V% P' `8 h {
) ~) S+ {! i K+ d0 G/ ` "type": "FeatureCollection",
3 U3 @! `5 o1 `" ? "features": [2 [8 A& ]6 \, _) z- M3 B+ E$ B/ P
{
6 X( P5 \' K+ g* S "properties": {"name": "Alabama"},
6 ^7 O J4 ~6 U' B "id": "AL",& K d; r/ g8 H/ c) F& X
"type": "Feature",+ @" y4 ] w) @+ o
"geometry": {% T: Q: F& A) ~, q
"type": "Polygon",
# N# v' {4 l, I. S( Q$ z "coordinates": [[[-87.359296, 35.00118], ...]]
1 w( p$ V' f3 R! \' u }
. R" i Z8 o' t Y3 d },
, @$ C) W8 K! `+ { {
8 g/ w7 W0 f$ \9 m* T "properties": {"name": "Alaska"},' N: Z) h/ F# P7 X6 I, T: w* ~
"id": "AK",
1 Y4 E* @- ^$ P2 R; o "type": "Feature",
9 J) q/ I. p" y2 l& C; a9 H "geometry": {$ |- R1 ~6 Z+ z, b7 j
"type": "MultiPolygon",5 p5 m i/ x1 k5 n* ?* e
"coordinates": [[[[-131.602021, 55.117982], ... ]]]8 N: V+ u8 C8 i% E# z% j
}
/ M/ B' `" m* d },
+ w! }( s" J2 @- a+ ?" F; @ ...
! G, n: a9 n8 v" C) } ]
) _* h8 `; p' e9 y2 M! {5 L) w( E }
0 v8 H& V. W1 O9 p
$ U- R, ^) `; H$ }, J% C8 ^0 b 读取本地的json文件 * G6 w. d1 m# |% Z3 O3 ~
f = open(zhengzhou.json)
: J0 i X6 f) R z0 t3 m8 `9 z L: K t = json.load(f)
& J9 T8 f/ a5 J: s' i- s
& p- c& t, H: @8 }; L" G. p6 b9 c 读取网络json
) ]6 B3 @9 M( y3 U% P' L6 Q, j url = (
3 p: o' h# P6 K "https://raw.githubusercontent.com/python-visualization/folium/master/examples/data"0 |8 H1 O j7 z3 x
)0 @+ c% M. z) ~3 W* f
us_states = f"{url}/us-states.json"
! o/ b% @& v* y7 n. w9 C% r. A! i2 [2 R5 }8 j& p
geo_json_data = json.loads(requests.get(us_states).text)- V# \3 m! z3 q
* P1 ~5 q0 J5 c: m8 v; T. x6 h5 p
y6 n6 h2 b. g! D, O: e" C2 H9 t& X% G9 n, t* T4 T2 q* [
1 r4 E& S% G1 p' p' ?( I: h, F& [( c. B$ ]2 [+ K
|