把時間線拉回到 2015 年 4 月 13 日,一位河南省實驗中學的內心老師在辭職信上寫下了「世界那麼大,我想去看看」這句話,後來爆紅網絡,我想這位內心老師當時寫這句話的時候確定沒想到這句只有十個字的話,成爲了當年的網絡經典語錄,成爲了咱們每一個人對那個年代的回憶。html
這句話直接致使了當年不少營銷號出來炒做概念,亂七八糟瞎炒一氣,蠱惑了不知道多少年輕人當年自認爲瀟灑的裸辭掉工做,一我的跑出去看世界。python
惋惜的是當年腦子一熱裸辭掉工做跑出去看世界的人,不知道有多少人還能穩定的着陸。突然想起來不知道在哪看到的一句話 「不是工做須要你,而是你須要一份工做」 。git
你們都是成年人,作決定前最好能本身多思考幾分鐘,仔細想一想本身是否能承擔後果。github
咱們想要出去看世界代價有點高,可是 Python 想看世界不是通常的簡單,咱們只須要用到一個 pyecharts ,就可讓 Python 想看啥看啥。shell
Echarts 是一個由百度開源的數據可視化,憑藉着良好的交互性,精巧的圖表設計,獲得了衆多開發者的承認。而 Python 是一門富有表達力的語言,很適合用於數據處理。當數據分析趕上數據可視化時,pyecharts 誕生了。bash
pyecharts 的安裝很是簡單,只須要一句話:服務器
pip install pyecharts
複製代碼
pyecharts 環境:網絡
pyecharts 文檔地址:pyecharts.org/#/zh-cn/int…echarts
pyecharts 示例代碼:github.com/pyecharts/p…spa
pyecharts 爲咱們提供了地圖組件 Map ,咱們能夠直接使用 Map 組件來看世界。
接下來咱們來看下如何使用 pyecharts 的 Map 組件來畫地圖。
如下示例均參考自官方示例
Map 組件的使用很是簡單,咱們能夠先看下世界地圖:
import pyecharts.options as opts
from pyecharts.charts import MapGlobe
from pyecharts.faker import POPULATION
data = [x for _, x in POPULATION[1:]]
low, high = min(data), max(data)
c = (
MapGlobe()
.add_schema()
.add(
maptype="world",
series_name="World Population",
data_pair=POPULATION[1:],
is_map_symbol_show=False,
label_opts=opts.LabelOpts(is_show=False),
)
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(
min_=low,
max_=high,
range_text=["max", "min"],
is_calculable=True,
range_color=["lightskyblue", "yellow", "orangered"],
)
)
.render("map_globe.html")
)
複製代碼
世界看的不想看了還能看看咱們偉大的祖國,代碼也很簡單:
from pyecharts import options as opts
from pyecharts.charts import Map
from pyecharts.faker import Faker
from pyecharts.globals import ThemeType
c = (
Map(init_opts=opts.InitOpts(
theme=ThemeType.DARK,
bg_color='#404a59'
))
.add(
"中國地圖",
[list(z) for z in zip(Faker.provinces, Faker.values())],
"china"
)
.set_global_opts(
title_opts=opts.TitleOpts(title="中國地圖-示例"),
visualmap_opts=opts.VisualMapOpts(),
)
.render("china_map.html")
)
複製代碼
再來一個我生活的城市上海的地圖:
from pyecharts import options as opts
from pyecharts.charts import Map
from pyecharts.globals import ThemeType
shanghai_list = ['黃浦區', '徐彙區', '長寧區', '靜安區', '普陀區', '虹口區', '楊浦區', '閔行區', '寶山區', '嘉定區', '金山區', '松江區', '青浦區', '奉賢區', '崇明區', '浦東新區']
shanghai_people = [65.38, 108.44, 69.4, 106.28, 128.19, 79.7, 131.27, 254.35, 204.23, 158.89, 80.5, 176.22, 121.9, 115.2, 68.81, 555.02]
BAIDU_LINK='https://baike.baidu.com/item/%E4%B8%8A%E6%B5%B7%E8%A1%8C%E6%94%BF%E5%8C%BA%E5%88%92/7426389?fr=aladdin'
c = (
Map(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color='#404a59', width='1600px', height='900px'))
.add("上海市-常住人口", [list(z) for z in zip(shanghai_list, shanghai_people)], "上海")
.set_global_opts(
title_opts=opts.TitleOpts(
title="上海地圖-常住人口(單位:萬人)",
subtitle="常住人口數據來自百度百科",
subtitle_link=BAIDU_LINK,
),
visualmap_opts=opts.VisualMapOpts()
)
.render("map_shanghai.html")
)
複製代碼
看完 2D 的有沒有以爲不過癮, Map 組件還未咱們提供了 3D 地圖的組件 Map3D :
from pyecharts import options as opts
from pyecharts.charts import Map3D
from pyecharts.globals import ThemeType
from pyecharts.globals import ChartType
from pyecharts.globals import CurrentConfig
CurrentConfig.ONLINE_HOST = "http://127.0.0.1:8000/assets/"
c = (
Map3D(init_opts=opts.InitOpts(
theme=ThemeType.DARK,
bg_color='#404a59',
width='1600px',
height='900px'
))
.add_schema(
itemstyle_opts=opts.ItemStyleOpts(
color="#313c48",
opacity=1,
border_width=0.8,
border_color="#000",
),
map3d_label=opts.Map3DLabelOpts(
is_show=True,
text_style=opts.TextStyleOpts(
color="#fff", font_size=16, background_color="rgba(0,0,0,0)"
),
),
emphasis_label_opts=opts.LabelOpts(is_show=True),
light_opts=opts.Map3DLightOpts(
main_color="#fff",
main_intensity=1.2,
is_main_shadow=False,
main_alpha=55,
main_beta=10,
ambient_intensity=0.3,
),
)
.add(series_name="", data_pair="", maptype=ChartType.MAP3D)
.set_global_opts(
title_opts=opts.TitleOpts(title="全國行政區劃地圖"),
visualmap_opts=opts.VisualMapOpts(is_show=False),
tooltip_opts=opts.TooltipOpts(is_show=True),
)
.render("map3d_china.html")
)
複製代碼
是否是很簡單,這些地圖我都沒有配數據,能夠配置上數據作一些看板的展現。
還有一點, pyecharts 的所須要的靜態資源,會默認訪問 assets.pyecharts.org/ 獲取(能夠查看生成的 html 文件):
若是網絡條件很差,地圖會展現不出來,咱們可使用官方爲咱們提供的本地服務:
須要先獲取 pyecharts-assets 項目
git clone https://github.com/pyecharts/pyecharts-assets.git
複製代碼
而後進入 pyecharts-assets 目錄啓動 HTTP file server :
cd pyecharts-assets
python -m http.server
# Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
# 默認會在本地 8000 端口啓動一個文件服務器
複製代碼
而後咱們在代碼中配置 pyecharts 全局 HOST:
# 只須要在頂部聲明 CurrentConfig.ONLINE_HOST 便可
from pyecharts.globals import CurrentConfig
CurrentConfig.ONLINE_HOST = "http://127.0.0.1:8000/assets/"
# 接下來全部圖形的靜態資源文件都會來自剛啓動的服務器
複製代碼
添加完成後的 html 文件生成後應該是這樣的:
這時咱們再打開頁面,能夠看到頁面基本上是秒刷新。
須要獲取源碼的同窗能夠在公衆號後臺回覆「看世界」獲取。