厲害了!用 Python 製作出來的地球儀!

純潔的微笑發表於2020-05-11

厲害了!用 Python 製作出來的地球儀!

文 | 潮汐

來源:Python 技術「ID: pythonall」

厲害了!用 Python 製作出來的地球儀!


Python 功能真的很強,強大到讓人吃驚,它能做的事囊括爬蟲、資料分析、資料視覺化、遊戲等等各方面,這些功能在實際的使用中應用廣泛,開發程式講究頁面的美觀與炫酷效果, 今天的文章將給各位讀者朋友們帶來不一樣的視覺盛宴,感興趣的朋友歡迎一起嘗試。

寫在前面的話:在之前的文章 Python 圖表利器 pyecharts 中有介紹了 pyecharts 的安裝及使用,詳細教程請到 官網 學習

pyecharts 功能很強大,只需要匯入相應的模組就配置相應的選項即可生成對應的超文字檔案,使用瀏覽器訪問即可!具體例項請見下文

盛宴1-2D世界地圖

先來個 2D 的瞅瞅~

厲害了!用 Python 製作出來的地球儀!

實現程式碼如下:

from pyecharts import options as optsfrom pyecharts.charts import Mapfrom pyecharts.faker import Faker
c = (    Map(init_opts=opts.InitOpts(width='1500px', height='1200px',bg_color='#E0EEEE'))    # 載入世界地圖例項    .add("世界地圖", [list(z) for z in zip(Faker.country, Faker.values())], "world")   # 不顯示地圖示誌    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))    .set_global_opts(        # 配置項標題設定        title_opts=opts.TitleOpts(title="世界地圖示例"),        visualmap_opts=opts.VisualMapOpts(max_=200)    )    # 生成超文字檔案    .render("world_map.html"))

盛宴2-中國3D地圖

透過匯入 Map3D 等實現中國地圖的 3D 呈現:

厲害了!用 Python 製作出來的地球儀!

實現程式碼如下:


from pyecharts import options as optsfrom pyecharts.charts import Map3Dfrom pyecharts.globals import ChartType
c = (    Map3D(init_opts=opts.InitOpts(width='1300px', height='1300px',bg_color='#EBEBEB'))
   .add_schema(        itemstyle_opts=opts.ItemStyleOpts(            color="#CDBA96",            opacity=1,            border_width=0.8,            border_color="rgb(62,215,213)",        ),        map3d_label=opts.Map3DLabelOpts(            is_show=True,            text_style=opts.TextStyleOpts(                color="#104E8B", font_size=16, background_color="rgba(0,0,0,0)"            ),        ),        emphasis_label_opts=opts.LabelOpts(is_show=True),        light_opts=opts.Map3DLightOpts(            main_color="#FFEBCD",            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_base.html"))

盛宴3-貴州地圖

現在用另一種方式來實現我家鄉的地圖,一起來一睹為快~

厲害了!用 Python 製作出來的地球儀!

程式碼實現如下:

# 寫入省份內各地區經緯度example_data = [    [[106.70722,26.59820, 1000],[106.63024, 26.64702, 1000]],    [[104.83023, 26.59336], [106.92723, 27.72545]],    [[105.30504, 27.29847], [107.52034, 26.29322]],    [[107.89868, 26.52881], [104.948571, 25.077502]],    [[105.9462, 26.25367], [109.18099, 27.69066]],]# 新增 3D 地圖c = (    Map3D(init_opts=opts.InitOpts(width='1200px', height='1200px'))    .add_schema(        maptype="貴州",        itemstyle_opts=opts.ItemStyleOpts(            color="rgb(5,101,123)",            opacity=1,            border_width=0.8,            border_color="rgb(62,215,213)",        ),        light_opts=opts.Map3DLightOpts(            main_color="#fff",            main_intensity=1.2,            is_main_shadow=True,            main_alpha=55,            main_beta=10,            ambient_intensity=0.3,        ),        view_control_opts=opts.Map3DViewControlOpts(center=[-10, 0, 10]),        post_effect_opts=opts.Map3DPostEffectOpts(is_enable=True),
   )    .add(        series_name="",        data_pair=example_data,        type_=ChartType.LINES3D,        effect=opts.Lines3DEffectOpts(            is_show=True,            period=4,            trail_width=3,            trail_length=0.5,            trail_color="#f00",            trail_opacity=1,        ),        label_opts=opts.LabelOpts(is_show=True),    )    .set_global_opts(title_opts=opts.TitleOpts(title="Map3D-GuiZhou3D"))    .render("guizhou_map_3d.html"))

盛宴4-地球村實現

一起來看看旋轉的地球吧^^

厲害了!用 Python 製作出來的地球儀!

實現程式碼如下:

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(init_opts=opts.InitOpts(width='1000px', height='1000px',bg_color='#FFFAFA',))    .add_schema()    .add(        maptype="world",        series_name="World Population",        data_pair=POPULATION[1:],        is_map_symbol_show=True,        label_opts=opts.LabelOpts(is_show=True),    )    .set_global_opts(        title_opts=opts.TitleOpts(title="3D 地球示例"),        # 設定地球屬性        visualmap_opts=opts.VisualMapOpts(            min_=low,            max_=high,            range_text=["max", "min"],            is_calculable=True,            range_color=["lightskyblue", "yellow", "orangered"],        )    )    .render("world_map_3d.html"))

總結

希望今天的分享能給大家帶來不一樣的視覺享受,同時夥伴們也別忘了要多多實踐。實踐是檢驗真理的唯一標準!

參考

[1]


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31499124/viewspace-2691359/,如需轉載,請註明出處,否則將追究法律責任。

相關文章