* |* R O, T, D0 z6 X
Choropleth 等值线图0 ?/ V2 P' A2 ^8 I
import pandas as pd #读取数据: Y2 N9 V6 K- ?0 D! _) m
from folium import Map,Choropleth,CircleMarker #用到的包
( C* j# k7 u/ u3 X5 z
2 x* u. ~* r8 U) s# t2 E #包含省的中国地图json9 }4 [" i j5 ]
china_geo = fhttps://geo.datav.aliyun.com/areas_v2/bound/100000_full.json
s# ?' v U) z0 @ #读取用到的面积数据
. T) p7 H! X* k* n datad = pd.read_csv(Desktop/square.csv,index_col=index)
4 C0 r2 K8 q: C2 s$ u( \ + x3 @: ~2 g8 `& d$ V. x
. Z; p" N: ~% U
m=Map(tiles=Stamen Toner) #地图风格+ i/ J2 ]- a* V* z$ O
2 n' F: {) I K* [; X
Choropleth(china_geo, #选择json
U8 w8 U. g: C: Y4 `$ T" {# l9 Q- v0 p( v/ t data = datad, #数据
2 `2 i5 E( Q4 H+ B. B columns = [province,square], #列,第一个为key,第二个为value
8 f9 ^+ m) X3 J key_on = feature.properties.name,#匹配到json
- B4 m7 u) R0 L2 N+ R fill_color = RdPu, #颜色
5 ]/ Y/ F% ]# e. R4 }- f7 M fill_opacity = 0.8, #填充透明度
% j& G' }( V) ` line_opactity = 1, #线透明度
9 n" V: V3 @/ A& R8 f$ w line_weight = 1, #线宽
/ L* k& Y P# p) V legend_name = 面积 #图例3 q1 S3 W0 j4 e9 i: ~0 p
: F+ K$ Y$ i) x- x3 y- @ ).add_to(m)3 m, y5 ~5 k* [, @
CircleMarker(location = [39.907518, 116.397514], #坐标点
% a+ ]0 Z. V7 M6 `6 ] radius = 10, #半径) e8 A, {+ C: T, Z1 }
fill = True, #填充
+ _$ R) G D5 H, D3 Q popup = This is beijing, #弹窗7 k( q% Q" j0 h4 V$ Y8 a
weight = 1 #circlemarker线宽
5 ~8 T6 X: P) k/ d ).add_to(m)
; {0 B0 m1 f/ b m.fit_bounds(m.get_bounds()) m, N: T: c7 }* d# [
m
7 j6 I- n' x6 ~& d
& s: V' Z+ w/ B4 M: W0 b6 h, J $ Z& q) c# s: n/ q2 M9 t
数据地址: square.rar - 蓝奏云 " X% q. G+ m6 p
两个重要的网站 & U# E# }$ k! m; i* E4 D
手动绘制geojson
- C0 i. T1 Q b# s3 b
, r& z. o( W' E: ~& B. @ 目前更新的geojson . b, j; i+ E9 _+ s7 W
0 |# O) A# S2 C+ f geojson格式 " e2 S( k, u9 C/ M- ^
{ W5 x. X; K9 Y
"type": "FeatureCollection",5 [' H1 }4 s. L- @ T! L
"features": [
: ^4 p; y* M8 C. d {
. @& k$ B5 h5 J "properties": {"name": "Alabama"},) [# _9 O7 J9 o: B% i4 ^
"id": "AL",: ~- J3 W4 H2 t2 \
"type": "Feature",
) R' Y3 ~6 X& |( ] "geometry": {0 y7 k) Z$ K% c; v. B x
"type": "Polygon",
4 A2 r C0 A- w" ?% p "coordinates": [[[-87.359296, 35.00118], ...]]
T( |; \" P A1 o3 G) O }
: d- y- \4 j; X3 @% z },8 ^* O& h% c$ [
{% K. A* y% f; L2 I* y2 ^
"properties": {"name": "Alaska"},) k* x0 J* X% {4 C" a' O5 j9 O
"id": "AK",* n1 G2 {: c; w. Q# ?; r W& M
"type": "Feature",
' l% R% ^5 j$ i- w- N/ L1 Q "geometry": {7 E/ r; C! z: ]
"type": "MultiPolygon",
! i1 E7 }" F9 @2 w$ ` "coordinates": [[[[-131.602021, 55.117982], ... ]]]
" b+ W6 `" v" i% E- C9 ` }
7 E7 R& \7 m3 t( m },
4 P0 j M! w/ i$ B- ^ ...
0 _! D1 X m: s7 W' M ]) m* i3 u( G' D* ^4 C: n
}* y5 j5 c8 Y# h5 ~ x' d% R
, z, \ Y( e- n0 M H 读取本地的json文件 5 {; I5 d" V, ]/ B, Q: J
f = open(zhengzhou.json)
' X1 K D2 ]' z! ~- q3 H9 ]6 j t = json.load(f)6 F X4 J n6 M1 U
5 R( @+ I9 C7 n# y8 L: n 读取网络json # M: p$ t6 G; ]0 U1 g, Q- B
url = (
% a4 z1 X$ U* {: Q2 ? "https://raw.githubusercontent.com/python-visualization/folium/master/examples/data"2 e4 v2 z m, o. _1 y6 }
)
1 S& l& v& q% V, J us_states = f"{url}/us-states.json"4 m4 A/ }. ]6 @) o, q! J' |
1 V8 F& `0 H; l7 b geo_json_data = json.loads(requests.get(us_states).text)
; M0 ~: _! J# G3 h: ? , s! a; p) ~) s3 b* N V+ O
/ y# C' i: M* i U1 \6 A2 r: [
' L R8 J# P# G0 |& {$ U8 P
& s* y6 h: x0 l
- E, b7 E2 q8 n3 r |