( N9 k% w2 }; Y Choropleth 等值线图
L( I0 x" o! x1 Z: ` import pandas as pd #读取数据
* N5 p; ~4 F9 }2 Y from folium import Map,Choropleth,CircleMarker #用到的包$ q: u- N6 j# V) y" Q6 {, _
' Q1 U+ F$ I* C# U5 t1 u5 ]# Q #包含省的中国地图json
7 H. _2 f0 q! X! W' J6 G china_geo = fhttps://geo.datav.aliyun.com/areas_v2/bound/100000_full.json4 W% o' E2 P# s6 R# _6 _
#读取用到的面积数据6 E6 h- L5 X+ {" P- {
datad = pd.read_csv(Desktop/square.csv,index_col=index) U" H) U% v! F, n" f* ^
6 d+ y3 G/ o0 I& a. z. Z
: H0 e+ p. v+ O/ C5 t3 r m=Map(tiles=Stamen Toner) #地图风格
7 I) W* R& w# E
, n- y' _0 a ~! P8 N Choropleth(china_geo, #选择json& O$ n' Y/ t r
data = datad, #数据! @4 {5 y: j" ~
columns = [province,square], #列,第一个为key,第二个为value
% e% A. {. N* E! y! \/ N( ^* Q5 E% F key_on = feature.properties.name,#匹配到json
8 {( @6 z% F2 r" r: @ fill_color = RdPu, #颜色8 {( T) e3 j3 X: e, ~. B4 w
fill_opacity = 0.8, #填充透明度) h4 I% [' z) }9 d' ?, L5 X% o
line_opactity = 1, #线透明度% e( V, t: J5 D) b' n* J* p
line_weight = 1, #线宽
: J* K) X2 [/ r) V x7 T* O legend_name = 面积 #图例
% P. _- G- j' ^, O4 ~2 O3 A; G1 E$ A# c2 a1 _% h
).add_to(m)6 E9 z8 ]: N F& ~* p1 K
CircleMarker(location = [39.907518, 116.397514], #坐标点6 J* u1 j8 d; F8 g& b- O0 D
radius = 10, #半径$ k h1 }/ a# i) G. W3 k
fill = True, #填充
: @8 Q+ O) ^; O1 U. A9 Z popup = This is beijing, #弹窗( ]) V. B5 b. {: Z1 F
weight = 1 #circlemarker线宽
) P7 z; l+ {& K1 F: _ h4 k ).add_to(m)
9 i, y5 J2 Z0 T! D* d8 p+ z/ M m.fit_bounds(m.get_bounds())
0 w% `- q1 w! r m& z. R1 a3 J0 U6 `& N( |$ [$ p! r7 @6 |
q, {2 @% E3 s$ R6 e 9 L$ M1 o* l* ~& n% P( o8 l! I
数据地址: square.rar - 蓝奏云 1 I9 p l' A) P" c& P
两个重要的网站 7 O! @5 a- I8 w9 U) w: d- p7 a' c3 a2 M
手动绘制geojson
+ s+ y5 w" p6 P3 ~4 a ) w/ x# k/ F$ K9 e5 S$ S
目前更新的geojson
( M; W u1 I- q; @ B , ? U$ @" M ?1 Q( t' J8 ^
geojson格式 + A* [6 O% F0 L
{
$ d7 l. ?. c+ {( h "type": "FeatureCollection",
/ S3 v/ u) R6 L+ i5 c "features": [4 ]" q; N) ^& u
{
5 p" s: r+ Y' p8 s5 X F "properties": {"name": "Alabama"},2 y1 t Q3 o; [) {; u
"id": "AL",$ q0 G9 v2 ~6 q a9 \
"type": "Feature",/ A2 F3 |1 d7 ]: r" `
"geometry": {
" z9 C2 F, V+ B "type": "Polygon",: z+ i6 _# B E8 [2 X5 v
"coordinates": [[[-87.359296, 35.00118], ...]]9 _8 i0 g* a( w4 U) H0 p
}, w4 B7 t: q. S$ e
},4 ^- ?' W K# S& y; }
{
2 \& P R- Z; J7 P# A "properties": {"name": "Alaska"},$ L& x( f& N( c. ~1 a* u
"id": "AK",# `+ d8 X' o8 h" h" z: I: u& d# v
"type": "Feature",
* L" T, Y& I _# v "geometry": {
( g0 g' U. |' T8 v1 R0 S0 s; d7 i "type": "MultiPolygon",
! M! {; r3 F, W6 F "coordinates": [[[[-131.602021, 55.117982], ... ]]]
# o" I, U; ^( Z: C- _1 F5 L Z, Y }4 q2 N$ Q% Z: D! c/ {
},+ S7 o0 e: ?1 q1 U
...
7 S; j6 _9 a% y+ o, M ]
0 K# X" m0 {, r }5 D' E7 Q3 A& L+ O/ Y
7 I5 I6 z. R3 u8 j/ H8 v
读取本地的json文件 ' ~# X- a& b# T* u) `% [4 U
f = open(zhengzhou.json)6 v; [% n$ _0 s# u
t = json.load(f)
" I7 ^8 ^& S# S% O& q # f5 }3 M7 b; _
读取网络json
2 [3 B( ]* f/ y K% O url = (
8 t# @5 b7 o# ?; k: h2 T2 W "https://raw.githubusercontent.com/python-visualization/folium/master/examples/data"
2 P" E* ?9 b1 _5 \$ h8 p7 M )
# O0 [' M6 z+ \! ^, Y us_states = f"{url}/us-states.json"9 t1 u c# Q- o7 G
3 K! E' a( l% t8 b. \ geo_json_data = json.loads(requests.get(us_states).text)+ Z! G6 S7 v5 I+ u, B7 V
- k. n5 J' S/ m' ~7 L
1 k) `( h- M% B. I% l
' @6 b/ I. u& @/ G& y
5 V/ B5 e& r3 ^( c. b, r
9 t. S$ {* o3 x1 i |