厲害了!用 Python 製作出來的地球儀!
文 | 潮汐
來源:Python 技術「ID: pythonall」
Python 功能真的很強,強大到讓人吃驚,它能做的事囊括爬蟲、資料分析、資料視覺化、遊戲等等各方面,這些功能在實際的使用中應用廣泛,開發程式講究頁面的美觀與炫酷效果, 今天的文章將給各位讀者朋友們帶來不一樣的視覺盛宴,感興趣的朋友歡迎一起嘗試。
寫在前面的話:在之前的文章 Python 圖表利器 pyecharts 中有介紹了 pyecharts 的安裝及使用,詳細教程請到 官網 學習
pyecharts 功能很強大,只需要匯入相應的模組就配置相應的選項即可生成對應的超文字檔案,使用瀏覽器訪問即可!具體例項請見下文
盛宴1-2D世界地圖
先來個 2D 的瞅瞅~
實現程式碼如下:
from pyecharts import options as opts
from pyecharts.charts import Map
from 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 呈現:
實現程式碼如下:
from pyecharts import options as opts
from pyecharts.charts import Map3D
from 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-貴州地圖
現在用另一種方式來實現我家鄉的地圖,一起來一睹為快~
程式碼實現如下:
# 寫入省份內各地區經緯度
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-地球村實現
一起來看看旋轉的地球吧^^
實現程式碼如下:
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(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]http://gallery.pyecharts.org/#/Map3D/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31499124/viewspace-2691359/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 厲害了,JavaScript 新提案:array.groupBy()JavaScript
- 厲害了,ECMAScript 新提案:JSON模組JSON
- 厲害了!5G 將在未來實現的五大進步!!!
- 厲害了,Laravel-china 開通部落格了 快來圍觀下Laravel
- 厲害了,Servlet3的非同步處理機制Servlet非同步
- 微服務基礎——厲害了!API閘道器微服務API
- 厲害了!100多個API介面分享!熱門、常用的都有API
- 好程式設計師web前端分享18個用CSS製作出來的東西程式設計師Web前端CSS
- Python pyecharts繪製儀表盤PythonEcharts
- 這個應用魔方厲害了,讓軟體開發者效率提升10倍
- 厲害了,一個更智慧的 JavaScript 對映器:array.flatMap()JavaScript
- 厲害了,一個自動掃雷遊戲專案!遊戲
- C# 中居然也有切片語法糖,太厲害了C#
- 騰訊《王者榮耀》的音樂是怎麼製作出來的?
- 厲害了,我用“深度學習”寫了個老闆探測器(附原始碼)深度學習原始碼
- 高中生寫的Fuchsia OS系統編譯的文章,真是厲害了編譯
- 太厲害了!解決了我對編譯的絕大部分問題!編譯
- 厲害了量子計算機!瞧瞧它是如何“秒殺”其他計算機計算機
- 厲害了!這個工具幫助你生成朋友圈轉發截圖
- 厲害了,2019-2020中國網際網路趨勢報告
- 厲害了!Adobe新出Firefly影片模型,2分鐘速成高畫質大片模型
- 厲害了,一年萌新的Android大廠麵筋,趕緊來看看!(B站、京東、攜程、騰訊...)Android
- 如何利用Scratch製作出好玩的遊戲?遊戲
- 3個關鍵製作出專業的PPT
- 厲害了,Lightroom Classic 2023新增ai智慧技術,輕鬆移除影像雜色!OOMAI
- 這屆AI程式設計師厲害了,還沒出校門就被預定?AI程式設計師
- 太厲害了!用了這個影片剪輯SDK,PR就可以拜拜了!
- 中國頂級程式設計師圖鑑,最後一個厲害了!程式設計師
- WordPress能夠製作出什麼樣的網站?網站
- 用 Span 對 C# 程式中三大記憶體區域進行統一訪問 ,太厲害了!C#記憶體
- 【公告】PSRC 11月獎勵榜單 | Top1 月入4w+,厲害了!
- WebGL之繪製三維地球Web
- 測試開發都這麼厲害了?為啥不直接轉業務開發?
- 厲害了!12秒將百萬資料透過EasyExcel匯入MySQL資料庫中ExcelMySql資料庫
- 厲害了!網際網路公司各崗位真實工作內容大起底!
- 用 Python(PyVISA) 實現儀器自動化Python
- 厲害了,騰訊云云巢榮獲信通院“雲原生技術創新案例”獎!
- 三篇論文入選國際頂會SIGMOD,厲害了騰訊雲資料庫資料庫