是的,它可以简单的方法,工作和更复杂的方式对地球的形状校正完成
中的Tableau的hexbin
功能上的任何XY数据工程斌原坐标为六边形区。
在地图上,该数据通常当属纬度,经度坐标以度表示。 Tableau可以直接绘制这些数据,但通常会使用稍微扭曲的Web墨卡托投影(远离赤道的区域大大增加)来做到这一点。这意味着纬度上定义的六边形箱的尺寸不会相同(东西方向一度代表地球表面上的一个小得多的距离,当纬度很高并且远离赤道但是北面的一度时,南线长约111公里)。
简单版本忽略这种失真并从lat-lon坐标生成hexbins。我将首先描述基于这种简单技术的方法。我将其基于一个数据集,其中包含英国每个邮政编码的位置(约2.5米行,密度在不同地区)。
的基本方法包括几个步骤:
- 使用参数,其允许六边形
- 的大小的调整生成一个值来定义额外的点的六边形的各顶点生成的比例因子(我通过为数据集上的每行添加一个值来实现此目的,该数据集由从1到6的随机数组成)
- 生成六进制中心的经纬度坐标
- 添加6个定义顶点六边形
- 剧情六边形为地图上的多边形(它们然后可通过基于基础数据的任何聚集体被着色)
这里是一步一步的指导。
我定义了一个参数hexbin size
,它表示以度为单位的hexbin的半径。然后六角仓基于所述数据集的每一行中的纬度和经度值通过以下方式定义:
的hexbiny公式是类似的。
数据集本身含有一种叫点名含有从1到6的值的字段(有多种方式来实现这一点,但在数据集中做这件事是不是在画面做的是保证随机的,因为许多数据库包含哈希函数更容易通过简单的mod函数可以将数字从1变成6的整数分布)。我定义基于点名价值的新领域称为角(来帮助定义六边形的顶点):
现在,我可以添加需要绘制定义六边形的多边形点:
经度是相似的:
此时数据集应在每个hexbin中包含足够的行,以保证每个hexbin包含行数为1-6的行,从而定义六边形的所有点。
要绘制六边形,请为绘图lon和绘图纬度字段设置适当的地理角色,然后依次双击它们。然后拖动hexbinx和hexbiny以更改细节并将图表类型从自动更改为多边形。这会给一些可怕的混乱,通过将PointID拖到Path来解决。这应该给这个(我还添加了行颜色六边形和调整颜色和透明度的数量的计数):
这说明基本技术的工作原理。但它也显示出一个关键问题:六边形多边形扭曲。如果你能忍受这一点(靠近赤道或小区域的问题不大),他们就会坚持下去。
但是,如果你关心扭曲(视觉以及六边形不能覆盖相同区域的事实),那么你必须做更复杂的事情。我在下面描述的是基于Tableau的Sarah Battersby的工作。下面
的调整涉及到一些额外的步骤,以便在和简单的解决方法上面:
- 基于距离的新的比例系数
- 转换的纬度,经度值转换为XY在基于Web的墨卡托投影系统坐标在距离上不是纬度
- 在新坐标系中使用距离而非角度生成六角形
- 将基于距离的六角形转换回经纬度坐标以定义六角形中心
- 添加使用距离坐标六边形的顶点,然后再转换回LAT-LON
您还需要添加一个参数是在坐标变换的转换因子地球的半径。
这是如何工作。首先转换为XY坐标:
现在我们可以使用hexbin上的新坐标分组:
的公式转换这些坐标回LAT-LON是下面(如果你想绘制中心的话很有用):
请注意,这是一个复杂的纬度公式。
但是为了使六边形多边形在绘制时能够正常工作,您必须在之前将6个顶点的额外点添加到变换回经纬度坐标。转化率是与上述相同的公式和最终的公式如下所示:
额外的部分只是增加了一个固定的距离,以基于由所述尺寸六边形的坐标为hexbin中心缩放因子(根据Angle的六个值,这些因子中有六个)。
当以同样的方式绘制成以前的多边形情节就应该是这样的(时整理好):
现在无论是外观和六边形的实际尺寸是更好的。
对于包含上述计算的Tableau公共工作簿see here。
PS Tableau可以并应该将大部分功能构建到产品中,因为它可以大大简化有用的技术。
事实证明,这是一项复杂得多的任务,比您乍看起来要复杂得多。在2016年Tableau会议上有关该主题的几个有用演讲,可在http://tclive.tableau.com上获取。与Sarah Battersby一起观看任何视频 –