. K: G( ~; k. g2 g
Choropleth 等值线图7 |1 l: g9 V6 o
import pandas as pd #读取数据
6 v& [4 g* |3 I# x1 K from folium import Map,Choropleth,CircleMarker #用到的包
, J0 g' l, x* `, _0 M% f 9 c; ~$ [* Z* g% R. X( o& X
#包含省的中国地图json
6 z6 v% n2 o# ^7 K# I china_geo = fhttps://geo.datav.aliyun.com/areas_v2/bound/100000_full.json
R% |( {9 i; M9 [. e# { #读取用到的面积数据1 z! n; b/ I% w+ {! x" X
datad = pd.read_csv(Desktop/square.csv,index_col=index)2 g6 t2 l; z! F1 r1 Z1 u
3 G& {; v( X& S/ ]3 { n
x" }9 z& a3 c7 x
m=Map(tiles=Stamen Toner) #地图风格
, n1 y. J3 ]" S3 Z
" _9 Q9 G" H2 f- D Choropleth(china_geo, #选择json
% Y- Y$ i) u1 ?" | A! P data = datad, #数据0 {; I& h! w! E6 w# Y0 v7 c
columns = [province,square], #列,第一个为key,第二个为value
# @! f8 d7 k3 @% D! P8 r( O key_on = feature.properties.name,#匹配到json7 i7 {1 @" O$ q# m3 f4 q
fill_color = RdPu, #颜色' y. @! i! d C* }. m. @
fill_opacity = 0.8, #填充透明度
; j4 E8 P* j9 e line_opactity = 1, #线透明度9 ^# l4 f: \9 ~. Y9 K* P) N& I% d6 f
line_weight = 1, #线宽
/ D% `! F5 q& U legend_name = 面积 #图例
1 o) X/ ?+ e4 x* X: d3 @5 t* k- I% p% w5 k2 y, E* {! @! m
).add_to(m)
4 ?( }' ~: q2 v( {) u0 S4 z1 m CircleMarker(location = [39.907518, 116.397514], #坐标点
- F3 J8 P; c2 E( o: ~8 b radius = 10, #半径# ~+ w! U# a# t+ V3 T2 z( j
fill = True, #填充
! U* f w4 b3 q/ M- h popup = This is beijing, #弹窗4 V, |; ~8 _$ U, f( k8 |
weight = 1 #circlemarker线宽 + m) ?: ~ m/ c( |5 j
).add_to(m): M: X3 j+ ~* @
m.fit_bounds(m.get_bounds())
; I! `7 A, l$ {7 r' [$ @ m/ w4 I) o1 X6 V; ?
! l& d! N3 X, z: h. E) l9 F P
! F: ~. [+ H3 v6 K& [ 数据地址: square.rar - 蓝奏云 . \& b9 ?4 j( g) ?7 m" u" f" l
两个重要的网站 1 D# Z4 M5 C0 n- y! C3 D# U( q9 ~9 h
手动绘制geojson [4 B8 K: l6 B( t2 i
% F) v, T6 U+ L9 d2 J, M 目前更新的geojson ( W: R: E2 J' W9 S9 f2 d) N1 ]9 m: N
* V' l+ x9 l2 M' ]. v geojson格式 3 b% [/ Q6 A! U
{0 [# B5 V0 ^1 u) V9 M7 g( T7 n
"type": "FeatureCollection",
$ G/ j% H$ {% \+ l "features": [$ _6 U- T0 ?% r& l }& I
{' K& j9 |: f1 s* R: `
"properties": {"name": "Alabama"},! F( J" N) ^1 \ c+ x( P! C0 I4 q
"id": "AL",8 H4 v! J' U6 A% m' W
"type": "Feature",
( b# I; z; c6 n; m "geometry": {
: X0 i ?1 k# V# h5 {1 f$ p "type": "Polygon",) A3 p# F6 N, }. U) L4 b
"coordinates": [[[-87.359296, 35.00118], ...]]0 G5 b+ t7 y! Z/ U& |* Y
}
3 y7 B8 A7 H9 d! j" o8 l" u },
1 _/ s" n2 |( L9 t7 X {
4 s; d3 j0 {; a/ ]& j. Q4 a+ o "properties": {"name": "Alaska"},% \ P: Z J: p. x; V8 b
"id": "AK",
7 V" G& L5 j0 q' K: |8 a# ?: s "type": "Feature",
4 C# q5 d7 Z2 t& u( z- ~8 m "geometry": {
6 k1 @/ ]( P" f+ n/ v "type": "MultiPolygon",
! ]* z' k$ q" M9 a }' `& C "coordinates": [[[[-131.602021, 55.117982], ... ]]]! G# H. a$ ~7 d( {2 m
}. P5 ~8 m$ U2 z
},
% X: O+ q; G. V% t' K1 G ...7 M: ~. H$ y) h
]; S: I' r% ^- l h l. Q/ ~
}8 L1 i& i4 [, d; ?
! G% r& @3 S6 u5 O) g
读取本地的json文件
/ A8 L% W. O0 a. x# ^) L1 ^ f = open(zhengzhou.json): s% E% a& i+ l$ U& E K
t = json.load(f) A/ k5 f2 N' t3 I5 U
2 \$ z, }+ i& J N& O+ I' U 读取网络json
9 d* k" c9 b; q/ v: l% ? url = (
7 X. f3 l0 O3 E: I- N4 {6 J$ ^ "https://raw.githubusercontent.com/python-visualization/folium/master/examples/data"
E/ ~5 c t3 r) n( h: V )
2 s& n+ K- t8 g3 L us_states = f"{url}/us-states.json"% {# W- q- ?# K8 I8 m& F( w! a
4 a4 w0 q' ^* o8 P" I
geo_json_data = json.loads(requests.get(us_states).text)1 L1 ~9 b8 ~: N8 K6 J2 X
0 Z, S H0 X& {- f* |/ `8 ]. z
. l& H r5 V. K+ H2 C" P& q+ j# M. R
! N8 D* g3 i( Y2 r/ r
1 ?! j3 p6 H# j) |' {: O
|