如何用 Python 制作地球仪?

来源:Python 技术「ID: pythonall」

Python 功能真的很强,强大到让人吃惊,它能做的事囊括爬虫、数据分析、数据可视化、游戏等等各方面,这些功能在实际的使用中应用广泛,开发程序讲究页面的美观与炫酷效果, 今天的文章将给各位读者朋友们带来不一样的视觉盛宴,感兴趣的朋友欢迎一起尝试。

写在前面的话:在之前的文章 Python 图表利器 pyecharts 中有介绍了 pyecharts 的安装及使用,详细教程请到 官网 学习

pyecharts 功能很强大,只需要导入相应的模块就配置相应的选项即可生成对应的超文本文件,使用浏览器访问即可!具体实例请见下文

盛宴1-2D世界地图

先来个 2D 的瞅瞅~

世界地图

实现代码如下:

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 呈现:

中国地图

实现代码如下:

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-贵州地图

现在用另一种方式来实现我家乡的地图,一起来一睹为快~

贵州地图

代码实现如下:

# 写入省份内各地区经纬度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 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]http://gallery.pyecharts.org/#/Map3D/‍

(0)

相关推荐

  • pyecharts绘制复联超级英雄战斗力

    前几天在网上看到有人用 matplotlib 绘制了漫威里几大英雄的战斗力图,赶脚灰常有意思.作为漫威和 python 的双重粉丝,我这次又 hold 不住了,于是也做了一个 pyecharts 版的 ...

  • 基于Pyecharts可视化大屏案例一(3)

    上两篇文章<基于Pyecharts可视化大屏案例一(1)><基于Pyecharts可视化大屏案例一(2)>已经为大家详细展示了大屏大致的制作过程以及可视化大屏的布局,接下来继续 ...

  • python数据可视化:基于pyecharts的BI可视化报表(I)

    python数据可视化:基于pyecharts的BI可视化报表(I)

  • 如何利用pyecharts绘制酷炫的桑基图?

    什么是桑基图 桑基图(Sankey diagram),即桑基能量分流图,也叫桑基能量平衡图.它是一种特定类型的流程图,核心在于展示数据的流转,图中延伸的分支的宽度对应数据流量的大小,通常应用于能源.材 ...

  • pyecharts丨页面布局工具

    让多张图表展示在同一页面 一. 令图表垂直布局--Page 二. 令图表水平布局--Grid P.S. 如何让两个饼图平行排列? P.P.S. 如何让两张纯图片平行排列? P.P.P.S 如何让两个词 ...

  • 使用streamlit上线中文文本分析网站

    cnsenti App 这是使用streamlit库将中文情感分析[cnsenti 部署到网络世界,可在线提供简单的中文文本的情绪及情感计算. streamlit库(https://docs.stre ...

  • 【学习分享】利用pyecharts绘图--分页显示图

    【学习分享】利用pyecharts绘图--分页显示图

  • Flask

    Flask 本指南介绍了如何在 Flask 中使用 pyecharts. Flask 模板渲染 Step 0: 新建一个 Flask 项目 $ mkdir pyecharts-flask-demo$ ...

  • 炫酷!用Python制作漂亮的流动桑基图

    来源:Python数据之道 作者:Peter 整理:Lemon 桑基图绘制实践 本文中介绍的是如何制作桑基图,使用的可视化库是强大的 Pyecharts (版本1.7.1,版本一致很重要).文章将从如 ...

  • 如何用手机制作幻灯片?

    行者8136次浏览2019.03.25 我们经常制作幻灯片可以用专门的软件,可以制作的专业而精美.如果对幻灯片质量要求不是太高,又不是经常制作的话,是否还有不要下载专门的软件呢?答案是,没有必要,一部 ...

  • 如何用python把pdf转为word

    手把手 | 20行Python代码教你批量将PDF转为Word 作者|丁彦军 给各位带来了一个免费简单快速的方法,手把手教你用Python批量处理PDF格式文件,获取自己想要的内容,存为word形式. ...

  • 如何用excel制作99乘法表?

    大伙对99乘法表都很熟悉,但是却不晓得如何利用excel表格制作这样的乘法表?如您对此也深感兴趣,来看看小编给出的教程指导吧. 1.打开excel表格,输入在B1:J1单元格区域,分别输入数字1-9. ...

  • 如何用Word制作字帖?

    练习书法字时,需要很多字帖,除了买字帖以外,还可以通过Word直接制作字帖.该如何通过Word制作字帖呢? 1 解决方案 用Word字帖模板制作字帖. 2 操作方法 制作字帖 步骤1        如 ...

  • 如何用cdr制作竖排字?

    我们中国的汉字是方块字,无论是横着排还是竖着排,都有其独特的美感,且不会影响阅读.现在在很多广告.画册.名片和海报这些平面设计中,都会用到CDR竖排字的排版设计,所以,对于想要做设计的小伙伴,竖排字不 ...

  • 2020春节特辑—如何用EXCEL制作冠状病毒肺炎确诊数据地图?

    写在前面的话:2020年的春节对于每一名中国人都是特殊的,从武汉起扩散至全国(除西藏外)各省市的冠状病毒肺炎,带来心理和生理上的磨难.衷心希望万众一心下早日战胜此次突如其来的疫情,每个人都安康. 欢迎 ...

  • Python制作一款简易音乐播放器

    大家好,欢迎来到 Crossin的编程教室 ! 今天给大家分享一个迷你项目案例:利用Python制作一款简易音乐播放器.这个程序具有一定的实用性,用到的技术也不算复杂,可以作为完成基础学习后的练手项目 ...

  • 用 Python 制作一个迷宫游戏

    相信大家都玩过迷宫的游戏,对于简单的迷宫,我们可以一眼就看出通路,但是对于复杂的迷宫,可能要仔细寻找好久,甚至耗费数天,然后可能还要分别从入口和出口两头寻找才能找的到通路,甚至也可能找不到通路. 虽然 ...

  • Day063|如何用Python实现复制粘贴文本

    原创 51DayDayUp Andy学Python 大家好,我是Andy. 当前任务: 已知表格内容如下,通过查询天眼查网站,将表格内容填充. 根据任务,结合目前所学知识,将任务拆解如下: 1.读取e ...