2 d, n$ E* o+ V# N/ m4 k
Choropleth 等值线图/ H# F( \: k, S4 u
import pandas as pd #读取数据; D4 \$ y' ~: I4 t
from folium import Map,Choropleth,CircleMarker #用到的包
6 v) {# r6 E8 V. @* p4 R
, d5 c; `! C9 a: s #包含省的中国地图json
2 q( b! v/ ^. T" m china_geo = fhttps://geo.datav.aliyun.com/areas_v2/bound/100000_full.json! [4 x( G4 @# R2 S7 A
#读取用到的面积数据
$ N& |' L; Z- U+ [' \- y8 R datad = pd.read_csv(Desktop/square.csv,index_col=index)" n* ~5 M9 H" H+ P' d; \% U
# k7 q4 a( X3 ~7 ~* F
/ B; V- a: t! I+ p; u m=Map(tiles=Stamen Toner) #地图风格) V: s- N3 {5 y
- F. l7 b! f, I( O7 j N
Choropleth(china_geo, #选择json
# T# U0 [# O& V data = datad, #数据0 y2 ^6 H- O- g6 e
columns = [province,square], #列,第一个为key,第二个为value
8 V; X6 m7 I2 I3 U, N key_on = feature.properties.name,#匹配到json/ B( z2 p' y w l& _/ ?
fill_color = RdPu, #颜色9 d! ^& v N+ P5 X. N: |
fill_opacity = 0.8, #填充透明度' _- }0 e) m' m! x
line_opactity = 1, #线透明度
6 U, \/ F' n# c& G( f q$ r) x line_weight = 1, #线宽3 |1 S# {3 x' J+ ?3 f+ t- E; i# U
legend_name = 面积 #图例
' s2 G, C% u& K) ]# T5 h% a! b' U+ }" u: t0 T7 o
).add_to(m), U: i, F1 e9 u" p
CircleMarker(location = [39.907518, 116.397514], #坐标点
% j+ C7 m. i& I: B0 x radius = 10, #半径( N7 h* Y2 J: c
fill = True, #填充2 s/ I% z0 W( z# e( G
popup = This is beijing, #弹窗
. N$ f2 X1 n" r weight = 1 #circlemarker线宽
/ [. _& P, D. \7 X ).add_to(m)( o* h1 o. }0 p; m( u
m.fit_bounds(m.get_bounds())
' S4 c1 O p$ V m' k& D3 @" l( _$ m4 f4 v" n$ t
9 [: O$ v0 R0 z1 [8 P
( B: o$ F6 `; ]7 _* ^/ F7 z# T; k
数据地址: square.rar - 蓝奏云 . H' Q" m. M6 l
两个重要的网站 ' s2 {: U* z' w8 L
手动绘制geojson
0 S& T3 h6 o4 \ 9 Z% j: ^' n8 ?* {& c
目前更新的geojson
1 ?0 \$ M, y L# t7 d5 a: g / K) ?% R& G" N% I: Y
geojson格式 , G; z+ V6 s" p# K
{
8 }* F' r3 h1 y8 G1 u& z2 { "type": "FeatureCollection",
z- f! P( b$ z3 Q+ N" l8 y "features": [9 d3 j, _$ M5 ]# Y
{
' J) C/ `- K c n! P. t "properties": {"name": "Alabama"},4 A( g2 I8 \) n/ C. x
"id": "AL",, f$ j- ?- D9 x
"type": "Feature",7 \! k# A7 h) ~# }- ~
"geometry": {- {; ^. U( v4 r H2 \5 m# b
"type": "Polygon",
& B6 Z, t5 \. I9 m7 H "coordinates": [[[-87.359296, 35.00118], ...]]- M e, S8 P" w! Q3 |4 ^
}
: }! z# A* D' Z% n+ G },
$ I' \ u# b& C2 u {* x% s1 l& k- H% T' A
"properties": {"name": "Alaska"},
: [' w+ j7 J. [0 O "id": "AK",1 M8 b, K! a" ]2 O, f
"type": "Feature",. J3 V2 y% U$ ?% C# S. S- S
"geometry": {
$ A9 v: l9 J5 o1 y" ?5 i "type": "MultiPolygon",
1 I7 B, f7 M7 `# u "coordinates": [[[[-131.602021, 55.117982], ... ]]]1 i; Y8 A& q- ~* q, {4 a
}
' s: g) y" y2 [. g' S },
3 K' K C; `) H1 { ...9 m/ Z% J% o; u6 v) o8 Q5 L
]/ b, b) v' x; n1 O
}- j- Y) K) R3 D- q9 Q2 i9 M8 V
3 N0 B5 `7 p! k9 U+ c) t* ]
读取本地的json文件
) B R; K) y! k7 z# ^- n f = open(zhengzhou.json)- f4 t" K% k+ _( A" u% |8 a. {3 ~
t = json.load(f)
* D Q3 b& N7 p$ P" _' Q
& O, o, a2 C( L5 [: | 读取网络json
+ h5 \1 w* P0 d1 c url = (3 o1 {$ c0 ~9 K( h; {" u8 c
"https://raw.githubusercontent.com/python-visualization/folium/master/examples/data"
) q8 S; C. I# W/ |1 d9 n% ]4 c& B )
, h( [8 m% k- X us_states = f"{url}/us-states.json"4 y- ^) u7 [9 Z4 C2 m5 `3 E
5 P) E) {1 @( Y# n2 L geo_json_data = json.loads(requests.get(us_states).text)
' Q0 Q9 s( }. u/ M! |3 e% u
" X; U: R" p, d9 u
. a$ t) @( t6 W4 `! {4 e/ n+ k. U4 V/ O/ V" S
% e) q. x; n. Q7 \( z& D8 n
f% K r! V' X |