$ C% V- x% W8 U
Choropleth 等值线图6 e+ z; |8 O# B1 x4 Y
import pandas as pd #读取数据
/ @7 D+ ~1 L. t" E1 D from folium import Map,Choropleth,CircleMarker #用到的包 C1 A# _: H/ N% b0 t7 ~: w
7 v# g6 q4 Z4 i' [- d5 i #包含省的中国地图json
$ A; S7 C3 M0 ?. K- K china_geo = fhttps://geo.datav.aliyun.com/areas_v2/bound/100000_full.json- O$ _& k8 Y& [ ?" u% m& |
#读取用到的面积数据$ }/ q& H% y" F$ Z- d t) L
datad = pd.read_csv(Desktop/square.csv,index_col=index). I, \8 c+ J: D5 w
/ b$ t: ] o, e2 x8 u; Y
0 x6 v- M; S( u/ r3 F
m=Map(tiles=Stamen Toner) #地图风格8 t7 W+ E) r4 ?. W" Q) q
+ M4 t. g4 M/ s# r. T8 U
Choropleth(china_geo, #选择json3 g4 |9 j" e/ o7 K( p) T/ c9 _
data = datad, #数据7 a- {0 }) L0 E+ Z' l) J. K
columns = [province,square], #列,第一个为key,第二个为value9 q* F7 C* O" z9 ^: ^1 f
key_on = feature.properties.name,#匹配到json
% U) {8 w$ b9 g/ q6 g4 Q2 i fill_color = RdPu, #颜色9 k5 U3 @: w+ _ y9 L# ?) e$ A) c
fill_opacity = 0.8, #填充透明度
8 S' q+ B& y# W. K7 N% h line_opactity = 1, #线透明度5 P; k4 ?& p- M2 b7 [ I
line_weight = 1, #线宽" H1 V, D5 X* r
legend_name = 面积 #图例! c. m, x. L% T/ q, B- A
]* I1 a* H! P) i' _% ?
).add_to(m)
" J9 L; r4 ]6 }% r$ F CircleMarker(location = [39.907518, 116.397514], #坐标点4 L$ H* \& ~! R+ G* {* t) H
radius = 10, #半径
) a3 t$ ?, S3 X: | fill = True, #填充( @" t M0 |4 J2 E2 c2 W
popup = This is beijing, #弹窗
2 _8 a2 B9 L5 W% P6 o/ m weight = 1 #circlemarker线宽
0 T5 m( I! T8 D7 t: `, V3 r ).add_to(m)+ q* m2 u. j3 p, P' o% l
m.fit_bounds(m.get_bounds())
2 m. m: @; D* i" o& R6 f m' p0 m9 g) C ]- W! l/ y# G" b/ q
* P, l4 F" w7 x- U0 {
. B- X5 ~% M: o A 数据地址: square.rar - 蓝奏云 7 ?0 z+ ~4 W2 l# h* U
两个重要的网站
' C6 }# v; i% g: A R* [ 手动绘制geojson ! h0 t' L- A# g8 l% Z) U! e! |
2 {7 V _0 l3 z5 l6 a 目前更新的geojson 1 P5 L3 _( {2 d/ s
9 E' j5 G; }( L7 y1 d) m; J9 E
geojson格式 7 x8 X# e& x* F$ ^' D" x- |
{
3 T: L, o# @' g3 w/ w, l; k "type": "FeatureCollection",; z; Q2 C, h8 ?# _
"features": [
4 b* I" e/ J$ `: h) p# H {
+ Z5 G2 C b( O5 }% U "properties": {"name": "Alabama"},; A/ A- Q3 {0 e: ~
"id": "AL",/ r& G2 |' s, L
"type": "Feature",
3 M) F8 Z0 K9 D) t# l3 i/ \ "geometry": {
5 Q* ^& s! h1 r2 J8 m/ n "type": "Polygon",' i& U( T2 _! N2 b
"coordinates": [[[-87.359296, 35.00118], ...]]! N0 z- E+ G5 w% [
}
3 C% C, C' Y% }+ p9 z/ | U },9 o6 z+ T' i" P5 M
{
* ~- s. E, W; `! Z# f/ g# a. j "properties": {"name": "Alaska"},
! f, i5 K; s/ L6 H9 C9 a6 Y8 j "id": "AK",
: t" t$ T$ c+ d8 T' s" T* w3 |9 v8 r "type": "Feature",2 L5 s2 |$ N! ^8 q
"geometry": {
' q$ |0 m/ b& B! m/ t "type": "MultiPolygon",) M: O7 K( W) g1 C
"coordinates": [[[[-131.602021, 55.117982], ... ]]]/ V& K5 [( K3 J4 @8 v; _ @8 m
}4 a r4 R! H- j& P4 r
},( s0 w1 L8 W( f! c
...9 L1 h3 K/ J+ A& N$ k; K7 Q) v
]) e( ]8 o2 |3 K7 [' j0 g7 I, G
}) V4 [# [8 ~4 K$ _
0 V6 `3 l9 A% ?& {5 l( \! m1 o/ M4 N. ^
读取本地的json文件 ; e/ N, @# Q# ~' C" z& c
f = open(zhengzhou.json)
5 u2 K, \. I: ^6 J9 j t = json.load(f)3 V( s9 R2 n# c# Z8 n
9 A8 G% E0 H' Z1 F6 a# ? 读取网络json
$ e: O o4 k) B url = (0 }% b( y( }: y, y$ _( P0 r
"https://raw.githubusercontent.com/python-visualization/folium/master/examples/data"; O& ~( t+ s8 }$ v
)
: v/ {" k5 g) c( q% G$ O us_states = f"{url}/us-states.json"
1 |% t* g/ X6 Q- _+ X
1 B1 ]- E! R( L+ v geo_json_data = json.loads(requests.get(us_states).text) K+ l/ X- G) s6 ~" ]8 ]
# T* h( g" y4 b
% r; _ g8 y0 m1 s3 ^" X Z: n
, j& U/ y3 o$ [ b" E$ K
7 E! {/ @8 s9 ]( f5 I: g& ?
3 Y3 i3 y* B+ O, p( L9 c: E, \ |