禹洋:【Tableau】 如何使用六边形网格地图(Hex Map)——图表挑战总结03​zhuanlan.zhihu.com

上一篇文章使用的网格地图的画法,在DashBoard排版时非常难控制,也算个痛点,于是继续在网上找解决方案。Rody Zakovich 设计了使用多边形地图的解决方案。Joshua Milligan 受此启发设计了使用 空间数据文件的解决方案,这次很多使用六边形网格地图画法的人大部分都是使用的这种方案。

新的解决方案需要 多边形地图Tablea支持的shapefile空间文件 的相关知识,我也是现学了一点,惯例贴出一个我自己搬运带字幕的教学视频(实在无力翻译,还是鼓励大家多接触英文的材料),欢迎来 关注 点赞 收藏 投币

视频教程地址​www.bilibili.com

1P是关于多边形地图的相关知识,2P是关于空间数据文件的使用,看具体画图方法前可以看一下这两个不到30分钟的小教程。

3P是关于使用一些其他地图背景的方法,感兴趣的也可以看看,但是和本次的网格地图画法无关。

具体教程

网盘资料 密码:k0w1

方法一 使用多边形地图

准备工作:连接数据

  1. 连接附件中的 Polygonic Hex Map.xlsx 数据。
  2. Point字段 从度量字段修改成为 维度字段

第一步:画多边形

  1. X字段Y字段 分别拖放至 列功能区行功能区
  2. State(州) 拖放至 详细信息标记卡
  3. 标记卡 上,将图表类型调整为 多边形 类型
  4. Point 字段拖放到 路径标记卡
  5. 编辑轴,将两个轴的 范围 都设置为 固定 X轴 范围区间为[-2, 28],Y轴 范围区间[-17, 13] , 将两个轴的区间同时调整为长度30能够保证六边形网格形状方正
  6. 颜色标记卡 - 效果 - 边界,设定随意颜色,给六边形增加一个边界看到比较清楚。

第二步:将 Abbreviation(州名缩写)字段 添加成为标签

  1. Y2字段 拖放到 行功能区
  2. 设置 双轴 - 同步轴
  3. Y2标记卡 图表类型调整为 (以下全部是在 Y2标记卡 设置)
  4. Abbreviation(州名缩写)字段 拖放至 标签标记卡
  5. 标签标记卡 - 标签外观 - 对齐, 同时设置为 左右居中 上下居中
  6. 颜色标记卡透明度 调整至0,同时将 边界 调整为
  7. 大小标记卡 - 调整至最小

第三步:关联新数据并调整颜色

  1. 关联 SuperStore 数据源
  2. 通过 State(州) 关联两份数据
  3. 将任意 度量字段 拖放至 Y标记卡颜色标记卡

成果

简单清理一下不需要显示的网格线,轴等。

交互式地址

方法二 使用空间数据 shapefile

准备工作

  1. 连接附件中提供的 HexStates.shp 数据

第一步:画多边形

双击 几何字段 ,生成六边形网格地图

第二步:生成标签

State Abbr字段 拖放至 标签标记卡

第三步:隐藏背景地图

地图菜单 - 地图层 - 冲蚀

冲蚀设置为 100%。

到目前为止看,使用空间数据的操作需要的设定非常少,很快就能构建好栅格地图。

排版方式的调整

这次不用再调整六边形大小了,上次要调整疯了。。。

第一步:生成三个辅助计算字段

# Size 所有涉及年份的数量
sum({COUNTD([Year])})# Rows 子图所在的行数
int(ABS(FIRST())/ROUND(SQRT([Size])))# Columns 子图所在的列数
ABS(FIRST())%ROUND(SQRT([Size]))

第二步:生成16张子图

  1. Year字段 拖放至 详细信息标记卡
  2. Columns字段 Rows字段 分别拖入 列功能区 行功能区
  3. 调整 Columns字段 Rows字段 的表计算计算依据,同时调整为依据 Year字段
  4. Columns字段 Rows字段两个字段的数据类型调整成为 离散

第三步:在仪表板进行布局调整

每个子图中的地图显示大小及位置,是需要通过在工作表中的地图视图工具栏来调整的。

我暂时没找到调整子图大小的方式,现在只能通过把分辨率调整到足够大,保证16张子图都能显示进来。

最后怎么给每个地图加上年份,大家可以自己尝试一下。

绘图原理探索一下

关于多边形地图

以阿拉斯加的这个六边形为例子看一下。

对比两张图,X字段Y字段 实际上是提供了六个点的坐标,Point字段是提供了画六个点的先后顺序,State字段 或者 Abbreviation字段 标记了不同的六边形。

Y2字段 标记实际上是和 X字段 配合标记了了六边形的中心点,也就是我们需要放标签的位置。

关于空间数据地图

Joshua 的csv文件也是根据 Rody 的位置数据调整的,可以看到 X字段Y字段是完全一样的 后面的 Y1 - Y6实际上是 Joshua 手工修改的。

多边形地图的坐标系还是二维平面坐标系,但是空间数据的坐标系一般是球体的投影坐标。

在我们具体使用过程中也可以看到,使用多边形地图方法,我们实际上是在一个二维坐标系画图,而使用空间数据,实际上是在一个经纬度的坐标系下来操作画图。

两个坐标系的数据转换,一般是需要进行投影转换,这次 Joshua 是自己调整试错的方式修改的,可能是试了六次。

具体空间数据文件的生成,是使用 Alteryx 生成的,暂时没精力向下研究了,有需要再了解吧。

shp 文件的封装的比较好,传入的实际上是51个州对象。

查看详情信息,可以看到经度纬度信息其实是人工配置的。

总结

我们看到空间数据的画法是最快捷的,对于多张图的快速排版也能够实现。

但是最早的使用六边形形状的画法灵活性更高,可以修改六边形的具体形状,可以分离呈现各个六边形等等。

参考材料

多边形地图方案: POLYGON HEX MAP IN TABLEAU空间地图方案: Hex Map Spatial File

修改记录:

V1.1 - 2019.07.14 :

方法一 - 第一步 - 5

原始的 X Y 轴范围描述写反了,现已更正,感谢网友反馈。

附:

教程软件功能区名称使用规范(自用)

参考了官方教程的软件功能区的翻译方式,以后设计软件内的功能,字段,选项等等描述统一进行斜体标注,目前规范也只是用到的会写进去,以后有新的描述再加。

官方文档的工作区命名

斜体标注

为了高效传递信息,以后尽量减少截图的数量。

数据窗格

列功能区, 行功能区

标记卡

菜单栏

vue中地图怎么标记数据库传过来的点_【Point小数点 图表挑战总结03】如何使用六边形网格地图(下)...相关推荐

  1. vue中使用axios post上传头像/图片并实时显示到页面

    前端开发中,为了更好的用户体验,在头像上传时会先将图片显示到页面然后点击保存按钮 完成图片的上传成功 代码部分有参考他人的写法. html代码: <div id="myPhoto&qu ...

  2. Vue 中实现 excel文件上传功能

    场景: 上传excel表,并将excel表中的数据构建成实体 <div class="pull-right" v-if="doc"><el-u ...

  3. Vue中 使用 calc 计算长度并传参

    1. calc() 函数简介与使用 calc():英文单词 calculate (计算)的缩写,是 css3 新增加的一个功能.它可以动态的设置元素样式中 border.margin.padding ...

  4. Vue中base64 转图片上传

    // 拍照获取图片base64 // imgsrc: base64图片资源refreshDataList (imgsrc) {let data = this.baseImg(imgsrc)consol ...

  5. 说出vue中的几种指令和他的用法_说一说VUE中的/deep/用法

    七夕了,写个昨天遇到的bug来缓解下没有人约的尴尬. 昨天和QA过历史bug时,发现有好几个浏览器不兼容的导致式样变形的bug,调查了一番发现是因为deep选择器的原因. 在说bug之前,先看看vue ...

  6. vue中使用antv/g6 绘制关系图、结构图_高级图标绘制设计软件最新版 | MyDraw 4.1.2...

    THE START 更新高级图标绘制设计软件最新版,MyDraw 4.1.2.还有一些类似的软件Xmind.Xmind ZEN等,都可在小编的菜单栏找到.进入主题! MyDraw是先进的绘图软件和矢量 ...

  7. 上传 mp4 格式判断_视频如何转换成通用的MP4格式?按下这个键,10秒就能搞定...

    我们在网上下载视频的时候,有很多的视频都是无法播放的,或者是需要特定的播放器才可以播放.其实,只要把这些视频的格式转换成通用的MP4格式即可.如果你还不知道怎么转换视频格式,下面就教大家两个小方法,百 ...

  8. vue中使用echarts实现地图颜色渐变及自定义浮窗内容

    在这篇文章里vue中使用echarts自定义浮窗内容及样式_芝士焗红薯的博客-CSDN博客,总结了echarts的一些简单用法.这篇文章,一个是在原来的自定义浮窗内容上实现了地图的颜色渐变,一个是简化 ...

  9. 在vue中使用wangEditor上传视频

    一.效果展示 实现效果 原本效果 二.修改wangEditor源码 添加插入视频panel 只修改Video.prototype._createPanel方法 // 原型 Video.prototyp ...

最新文章

  1. CS-APP:Section 5.1,Memory aliasing :看上去逻辑一样,执行结果一样吗?
  2. RabbitMQ 官方NET教程(二)【工作队列】
  3. 数组中两个字符串的最小距离
  4. php 如何将字体转为gb,利用php怎么将utf-8与GB2312相互转换
  5. JQuery:实现列表展开和缩放
  6. java8 函数式编程_使用Javaslang进行Java 8中的函数式编程
  7. mysql内置时间函数大全_MySQL 的时间函数 大全
  8. A2W和W2A :很好的多字节和宽字节字符串的转换宏
  9. Codeforces 19E 树上差分
  10. OpenCasCade拓扑几何(拉伸,扫略,旋转)
  11. 软件测试 — 面试题
  12. 山石网科Hillstone防火墙L2TP详细配置步骤(官方最新版)
  13. Markdown设置自动生成目录及序号分级标准
  14. NCM格式转换MP3格式
  15. 分享一下PPT常规使用方法和技巧
  16. 气象环境监测系统有哪些组成设备
  17. 郑州、昆明、韶关等多地全面推行商品房买卖合同电子签约
  18. JAVA 华为云 流程控制基础题
  19. 基于php食堂外卖系统
  20. minecraft java版皮肤查看_厨师长教你:提取 Minecraft 基岩版付费皮肤并用于 Java 版...

热门文章

  1. php odbc连接sqlserver,php pdo连接sqlserver配置
  2. 简析.NET Core 以及与 .NET Framework的关系
  3. linux lynx 源码,Lynx字符浏览器移植
  4. java例7_在Java 7中处理周数
  5. python3.7操作kafka_python3.7新增关键字:async、await;带来和kafka-python==1.4.2的兼容性问题...
  6. c++17(18)-static_cast
  7. rust(28)-具名结构体
  8. 【深度学习】在PyTorch中使用 LSTM 自动编码器进行时间序列异常检测
  9. 【机器学习】机器学习神器Scikit-Learn保姆级入门教程
  10. 一文读懂残差网络ResNet