echarts 3d饼图_R工程化 R中最好的3D地理可视化(上)

本系列主要介绍R语言中当下最好的3D地理可视化,且完全可以商用或科研用。 首先展示一下三种包做出的可视化效果, (1)echarts4r b19fb69d758681f1d0369eb10714b522.png
0c666ffa00688b4ae0dd785a15da8a34.gif图1 中国航线图
完整视频见本人B站链接,
中国航线可视化https://www.bilibili.com/video/av38306681
(2)mapdeck

ccd6024e17547c9dcb6ed8563291af25.gif

图2 航线图
引用自mapdeck官方文档[1] (3)rayshader

a5973f7624d2eb0e27c8e663a13e6222.gif

图3 地形图(带阴影)

e15207b33bf1806cff3feebe2c6a7568.gif

图4 3Dggplot
以上两图转自包作者推特[2][3] 其中,echarts4r与mapdeck能嵌入到shiny中,rayshader目前不支持。 本文首先介绍 echarts4r 在3D地理可视化的用法,

简介

echarts是一款优秀的前端交互可视化框架,免费商用,一开始由百度开发,现已加入Apache体系,官方实例见此引用链接 [4] 。 echarts4r的作者很好的将echarts封装到了R中,本文略过ecahrts4r基本图表(柱状图、饼图、折线图、桑基图等)的说明,借echarts4r中3Dglobe的例子,向大家介绍如何实现echarts的js配置文档与R之间的互通,基于此读者就可以根据文档自行发挥主观能动性,做出自己想要的交互可视化。

官方案例演示 [5]

library(echarts4r.assets)library(echarts4r)flights   paste0("https://raw.githubusercontent.com/plotly/datasets/",         "master/2011_february_aa_flight_paths.csv"))# Lines 3D# Globe# get tetures: echarts4r-assets.john-coene.comflights %>%  e_charts() %>%  e_globe(    environment = ea_asset("starfield"),    base_texture = ea_asset("world topo"),    height_texture = ea_asset("world topo"),    displacementScale = 0.05  ) %>%  e_lines_3d(    start_lon,    start_lat,    end_lon,    end_lat,    name = "flights",    effect = list(show = TRUE)  ) %>%  e_legend(FALSE)
效果如下,实际上渲染出的是个旋转的动图。

7b94940339645e801154f214cfed0d5e.png

图5 globe1
我们对照一下ecahrts中globe的配置文档 看下,environment 是背景参数,base_texture 表示地球表面,height_texture 表示地球表面高度纹理,displacementScale表示地球顶点位移的大小。 这些参数我们都可以进行修改,如改变地球表面图片,将
base_texture = ea_asset("world topo")
改成
base_texture = ea_asset("world_night"),
同时高度纹理也要改成
height_texture = ea_asset("world_night"),
效果如下,

02fef0c73c3fa524661ac4ddd022d6ce.png

图6 globe夜景
这些都是内置的图片,路径在echarts4r.assets包的assets文件夹中(~/echarts4r.assets/assets)

26ba352903d6a7a2bb25949396590290.png

其中,部分图片是我从哈勃望远镜的网站  [7] 下的,如果想改成自定义的背景图片,只需要将environment 部分改成
environment = ea_convert("./xxx/xxx.jpg")
即可,效果如开篇的gif图所示。 自定 义完整的配置项参数 上面修改的参数都是ecahrts4r例子中或者是函数说明里的,如果想修改完整的配置项参数呢,那就需要对照echarts的官方文档了,链接见 参考6 , globe的配置项结构如下,

f385319c40abc54532816f7cb87e893a.png

图7 globe配置文档结构
ecahrts4r中的e_globe对应的就是文档中的globe,若要修改参数,直接在e_globe内部加就行,同级直接加,有子层级的需要加一层list包裹,格式为
v1 = para1, v2 = para2, v3 = list(v3.1 = para3.1)...
注意,除了TRUE/FALSE,其余参数大小写需完全一致! 举例如下,
#######library(echarts4r.assets)library(echarts4r)flights   paste0("https://raw.githubusercontent.com/plotly/datasets/",         "master/2011_february_aa_flight_paths.csv"))# Lines 3D# Globe# get tetures: echarts4r-assets.john-coene.comflights %>%  e_charts() %>%  e_globe(    base_texture = ea_asset("world_topo"),    height_texture = ea_asset("world_topo"),    displacementQuality = 'high',    displacementScale = 0.05,    shading = 'realistic',    light = list(main = list(shadow = TRUE))  ) %>%  e_lines_3d(    start_lon,    start_lat,    end_lon,    end_lat,    name = "flights",    effect = list(show = TRUE)  ) %>%  e_legend(FALSE)
我想修改light中的main中的shadow参数,由于是多层级,我需要加两层list,且要把true变成R中的TRUE。效果如下,

d839ab6f20b3f95b9f8153ae487e1def.png

图8 globe2

官方JS实例转R

以本链接  [8] 为例,该实例如下,

79c9a4f4000ecd6f2c89e5fa59fb0501.png

图9 echarts globe官方实例
有两种方式 (1)转option (2)转option中的globe 这里主要介绍第二种。首先,把globe部分抽出来,再遵循
  • : 转=
  • {}转list()
  • []转list()
  • true/false转TRUE/FALSE
即可,但该例子还要注意的是,用到了目录文件,且这些文件都是echarts4r.assets/assets下的,于是可用ea_asset转换,转后的完整代码如下,
#######library(echarts4r.assets)library(echarts4r)flights   paste0("https://raw.githubusercontent.com/plotly/datasets/",         "master/2011_february_aa_flight_paths.csv"))# Lines 3D# Globe# get tetures: echarts4r-assets.john-coene.comflights %>%  e_charts() %>%  e_globe(    base_texture = ea_asset("world_topo"),    height_texture = ea_asset("world_topo"),    displacementScale = 0.04,    shading = 'realistic',    environment = ea_asset("starfield"),    realisticMaterial = list(roughness = 0.9),    postEffect = list(enable = TRUE),    light = list(      main = list(intensity = 5,                  shadow = TRUE),      ambientCubemap = list(diffuseIntensity = 0.2)    )  ) %>%  e_lines_3d(    start_lon,    start_lat,    end_lon,    end_lat,    name = "flights",    effect = list(show = TRUE)  ) %>%  e_legend(FALSE)
注,删掉了light>ambientCubemap>texture参数,效果如下,

da7e32fba745e4790eac76bfc8302088.png

图9 globe3
echarts globe中的参数丰富,如景深,聚焦,光线等,大家可以自行尝试。 以上就是本节关于echarts的3D地理可视化的全部内容,欢迎交流!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ECharts-X是 ECharts 团队推出的全新 3D 可视化库,它是基于 ECharts 的扩展,底层深度整合了 WebGL 库QTEK和 Canvas2D 库ZRender。特色混搭ECharts 里的混搭功能很强大,作为 ECharts 的扩展,ECharts-X 自然也需要支持。ECharts-X 能跟 ECharts 的折柱饼地图等图表混搭,可以有更丰富的可视化效果,同时 ECharts-X 也能够直接使用 ECharts 的 legend, dataRange 等组件。3D大规模标注ECharts-X 的标注在效果和使用上都跟 ECharts 的标注(markPoint)类似,但是由于WebGL的强大能力,对于几万甚至几十万的markPoint也能进行实时的动画和交互3D大规模标柱标柱(markBar)是 ECharts-X 新定义的一个概念,它是标注(markPoint)的衍生,在三维空间扩展了高度维度表达更丰富的数据信息。3D大规模标线同样 ECharts-X 的标线在使用上和 ECharts 类似,但是展现效果从 2D 变成 3D 的曲线,支持几万条 markLine 的实时展现,动画以及交互风场,洋流等向量场的可视化NASA之前发布过全球洋流图,用梵高风格的表现使得可视化也充满了艺术感,ECharts-X 也提供了对洋流,风场这种向量场可视化的便捷配置。同样的,也是实时的展现和交互。自定义底图这个功能比较简单但是非常实用,能够配置地球的底图纹理图片,使得展现更有质感,以后也会在 ECharts 的 map 加入。下面截图是将地图换成木星纹理的效果。 标签:ECharts
城镇化建设是将农村人口转换为城市人口的一个全过程,是处理资源、自然环境、庞大的人口数量化学物质要求与我国可持续发展的各种分歧及其完成智能化的必然选择。历经几十年的勤奋努力,国城镇化建设获得了极大的成就,但也随之产生了交通拥堵、住户定居标准较弱、自然环境噪音污染比较严重、水资源污染、发案率持续上升、燃气覆盖率和硬底化路面比例低以及废水废弃物处理设备欠缺等一系列城市难题。城市是一个总体,因为城市管理的多元性和人管理工作能力的制约性,现阶段在我国迫不得已将城市切分管理,产生了以职责分工为基本、以各司其职和等级控制为特点的行政部门管理体系。伴随着城市经营规模的不断发展,这种体系出现了行政部门业务间、政府部门各单位间、各当地政府间、垂直单位与当地政府间及其各行政部门等级间的切分,产生了碎片化的切分管理方式。在数字化、信息化迅速发展壮大的今日,这类管理方式的缺点更为突显,既妨碍了政府部门总体效率的完成,增加了单位间融洽的成本费,又阻拦了服务项目政府部门的基本建设,并给群众办事带来巨大的麻烦。智慧城市基本建设便是根据信息技术在城镇化发展的整体规划和基本建设、管理和运作、生产制造与生活等各层面多方位的嵌入、渗透和使用,提高城市化进程水准,促进产业链转型发展和政府行政部门效率大幅度提高,它在城镇化建设推动的全过程饰演愈来愈关键的人物角色。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值