把時間線拉回到 2015 年 4 月 13 日,一位河南省實驗中學的心里老師在辭職信上寫下了「世界那么大,我想去看看」這句話,后來爆紅網絡,我想這位心里老師當時寫這句話的時候肯定沒想到這句只有十個字的話,成為了當年的網絡經典語錄,成為了我們每個人對那個年代的回憶。
這句話直接導致了當年很多營銷號出來炒作概念,亂七八糟瞎炒一氣,蠱惑了不知道多少年輕人當年自認為瀟灑的裸辭掉工作,一個人跑出去看世界。
可惜的是當年腦子一熱裸辭掉工作跑出去看世界的人,不知道有多少人還能穩定的著陸。忽然想起來不知道在哪看到的一句話 「不是工作需要你,而是你需要一份工作」 。
大家都是成年人,做決定前最好能自己多思考幾分鐘,仔細想想自己是否能承擔后果。
我們想要出去看世界代價有點高,但是 Python 想看世界不是一般的簡單,我們只需要用到一個 pyecharts ,就可以讓 Python 想看啥看啥。
安裝
Echarts 是一個由百度開源的數據可視化,憑借著良好的交互性,精巧的圖表設計,得到了眾多開發者的認可。而 Python 是一門富有表達力的語言,很適合用于數據處理。當數據分析遇上數據可視化時,pyecharts 誕生了。
pyecharts 的安裝非常簡單,只需要一句話:
pip install pyecharts復制代碼
pyecharts 環境:
- Python3.6+
pyecharts 文檔地址:pyecharts.org/#/zh-cn/int…
pyecharts 示例代碼:github.com/pyecharts/p…
看世界
pyecharts 為我們提供了地圖組件 Map ,我們可以直接使用 Map 組件來看世界。
接下來我們來看下如何使用 pyecharts 的 Map 組件來畫地圖。
以下示例均參考自官方示例
Map 組件的使用非常簡單,我們可以先看下世界地圖:
import pyecharts.options as optsfrom pyecharts.charts import MapGlobefrom 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 optsfrom pyecharts.charts import Mapfrom pyecharts.faker import Fakerfrom 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 optsfrom pyecharts.charts import Mapfrom 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 optsfrom pyecharts.charts import Map3Dfrom pyecharts.globals import ThemeTypefrom pyecharts.globals import ChartTypefrom 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 文件生成后應該是這樣的:
這時我們再打開頁面,可以看到頁面基本上是秒刷新。
以上是用pyecharts繪制地圖的方法的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!