8 `- q8 H8 N$ k( o8 o1 K( o Choropleth 等值线图
9 {0 s- d% x: d! ?+ z import pandas as pd #读取数据
p% G( ~0 V9 w; \, r9 j# H from folium import Map,Choropleth,CircleMarker #用到的包
5 y: X; W/ [# @# X
4 g7 D. \ M) {9 O* z #包含省的中国地图json) x3 V8 U+ Y* v/ {4 n( U& V2 i" B. B
china_geo = fhttps://geo.datav.aliyun.com/areas_v2/bound/100000_full.json" ^; f% ~$ O c2 N u1 G" ?; f- {* l
#读取用到的面积数据& D! v! o5 D; K' e* K/ B U
datad = pd.read_csv(Desktop/square.csv,index_col=index)
2 ?7 O7 f5 G+ x4 Y. \ 0 l! |8 ^. _ D% C2 B
- h0 H& ]- e: k* b- X& l
m=Map(tiles=Stamen Toner) #地图风格
2 M2 C8 S. {. J/ ]) s8 \% ^# L: |2 T1 ?- t& x6 \4 L9 p
Choropleth(china_geo, #选择json
% X) o1 H* _ D data = datad, #数据6 _ v3 }- v- H8 D" @
columns = [province,square], #列,第一个为key,第二个为value
( b: s# h" u. k E+ i key_on = feature.properties.name,#匹配到json
% ?2 f9 I6 q9 |0 }. k E8 t fill_color = RdPu, #颜色1 m0 P4 M' q* {& N$ B. ~2 H
fill_opacity = 0.8, #填充透明度
2 t, U$ x c7 R4 p. M line_opactity = 1, #线透明度, X7 ^. q8 O) ~
line_weight = 1, #线宽; a# A9 S1 W$ q# L- _
legend_name = 面积 #图例
! A; x" B! ^" ` ?" ?" p9 N6 ~6 h# ^7 M: p; N. X( t- G1 [1 W/ W9 M
).add_to(m)
* L8 a; X( W" j CircleMarker(location = [39.907518, 116.397514], #坐标点
1 H8 s2 q& I. p0 w5 S1 a4 s radius = 10, #半径# z& j5 n* [4 k* R3 ]& R
fill = True, #填充
2 c0 E! ?" O. E popup = This is beijing, #弹窗" e; }8 f6 w# f: X! W) x
weight = 1 #circlemarker线宽
# Z1 p7 C7 ?/ v7 ?: k6 T ).add_to(m)/ J, B6 m8 N5 E3 w; Y) ^0 O
m.fit_bounds(m.get_bounds())& O) y+ p( L6 u1 W( m0 C! \3 N
m: \) Y! v" r$ {8 j
1 ]0 j* r* K# [1 [' Y0 v7 k* D$ [
! s$ z$ o( V4 U6 I 数据地址: square.rar - 蓝奏云 ' @6 m" n8 G/ Y. c) P6 ~& w
两个重要的网站
: E1 f* ], A2 `! k 手动绘制geojson * j' d5 g+ k7 z/ ]
6 C3 Y* p& B3 k& K3 t ` 目前更新的geojson
2 `! o% i8 F! u6 `! N- S - m& g4 G/ D* ~4 U
geojson格式
r" P( e0 i2 S: W! C, o' h" t {# y! }: x& M$ G8 a$ n2 U. b. E
"type": "FeatureCollection",
, T' e8 ?3 K8 M6 K3 o) Q m( M "features": [, J+ e. Y, B R& P- s4 q
{! Z8 x) R; F$ o1 v% a" @0 s$ q- R
"properties": {"name": "Alabama"},
: e: r6 M$ X9 u9 a" l1 j "id": "AL",: q7 g% _" B2 O* _4 s
"type": "Feature",
& {& G3 ]* K/ s- s) i# ? "geometry": {
2 {3 t- ~. f3 c; r0 j% X4 k z "type": "Polygon",
$ `$ g9 O: I3 p% \. p B "coordinates": [[[-87.359296, 35.00118], ...]]
! q" I6 z! V/ r) u1 `" E }
& A! L: a! I% b) u },: r" P* c7 k6 U, J3 G! a# s/ m) _
{' n$ z; m; w# _$ ]2 M s
"properties": {"name": "Alaska"},9 e/ d! X1 q- f% ~
"id": "AK",
. D- r5 J5 n, V# I "type": "Feature",
+ k( V; c0 W* A# V "geometry": {
7 N, W$ P. I& s; N/ M; ]( o# Y "type": "MultiPolygon",9 ?$ @ v# g% v
"coordinates": [[[[-131.602021, 55.117982], ... ]]]
( i- l8 S a6 U9 q* }! p$ O }
; D5 W! Z. G0 C) O, l p+ m0 t },
! S% [, R4 h; L) r! O7 u1 C ...
+ {+ B" K# k* z9 F8 X ]
+ h" N/ W+ q' y } u2 d3 k% x: y0 {0 a8 F
5 h1 B1 h5 q& C8 X( h5 } 读取本地的json文件 ; l: F% C( `0 {! E) x/ c9 f
f = open(zhengzhou.json)
: p5 E8 r0 K6 f/ m$ P& T t = json.load(f)8 {) R1 p; @- ^- n# j% k0 F4 d
3 A' b" d& k! e, p
读取网络json 4 r; @+ Z9 x" Q! `/ c
url = (7 C) Q, x6 p# y/ H9 r7 A
"https://raw.githubusercontent.com/python-visualization/folium/master/examples/data"
5 A g. ?, x- j. Q! S )
& Z2 { C3 S! |" b+ ` us_states = f"{url}/us-states.json"
' r6 z. b3 d% n4 |' \) c z! [! _2 N
geo_json_data = json.loads(requests.get(us_states).text)0 I1 q$ T8 p: ]5 B) X2 \
. V' c X9 I8 [ Z4 Q% ?% x) w; }, W1 ~: m' ~6 O& e9 Z
$ x' D* N9 v9 W5 a; {1 B3 d! H
# z: ?4 a& W I6 d( I0 H5 ?, }) R4 N6 R1 D% W. `7 J
|