问题标签 [cartogram]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
395 浏览

plot - 使用 spmap 绘制县的问题

我正在尝试通过县与县相关联的值来绘制美国大陆的县。我正在使用该spmap软件包。我的形状文件来自: https ://www.census.gov/geo/maps-data/data/cbf/cbf_counties.html 。我正在使用 500k 版本。

我解压文件。然后我按如下方式加载地图:

如果我不想遮蔽县,一切都会完美:

但是,如果我执行以下操作(仅使用 _ID 作为此玩具示例的值),则只会填充少数几个县(地图要小得多,并且出现阿拉斯加):

该怎么办?

0 投票
1 回答
23382 浏览

javascript - “错误:属性 d:预期数字”

我正在尝试使用Cartogram.js 和 d3.js创建一个制图。我已经使用了在 cartogram.js 存储库和这里找到的示例来组合一个脚本,该脚本使用投影在 SVG 内生成世界地图d3.geo.mercator(),现在我正在尝试使用 Cartogram.js 库来扭曲地图但是我' m 收到以下错误:

这是我用来扭曲地图的代码:

以及包含我想用来扭曲地图的数据的 CSV 文件:

在这个项目之前,我没有任何使用 d3.js 的经验,所以如果你能给我任何反馈/指导,我将不胜感激。

我正在使用 d3 的 3.5.17 版本,仅供参考。

谢谢。


更新 - 2016 年 9 月 8 日 15:22 BST

根据@Mark 的建议,我已经实现了d3-queue,尽管问题仍然存在。但是,如果我在此实现中做错了什么,我将不胜感激任何人能给我的任何见解!:)


更新 2 - 2016 年 9 月 8 日 18:05 BST

这是 Plunker 上可用于测试的脚本的最新版本,由@Mark 提供:http ://plnkr.co/edit/iK9EZSIfwIXjIEBHhlep?p=preview

尽管生成的图表显示不正确,但似乎我的初始错误已得到修复。


更新 3 - 2016 年 10 月 8 日 20:45 BST

@Mark 的回答帮助澄清了我的很多问题,因此我有一个部分功能的图表但是为了解决这里详述的问题,我使用参数重新生成了我的地图文件--stitch-poles false,并且在这样做之后我再次收到以下错误:

@Mark 对这个错误的初始修复仍然存在,因此我很困惑为什么会重新出现。您可以在这里查看我的最新代码和我的新地图 topojson 文件。再次感谢。

0 投票
1 回答
74 浏览

javascript - D3 Cartogram.js 连续制图值未反映

我正在构建一个入境难民人数的连续制图,基于此示例,使用用于 D3 的 Cartogram.js。

当我只使用难民号码时,地图不会移动。 基本难民人数

但是当我在线添加一个任意数字到“r”时,它就可以工作了。并且任意数字越高,变化越剧烈。 示例 1 示例 2

为什么是这样?是因为我的某些值是 0,还是因为方差太高?

0 投票
1 回答
1081 浏览

r - 在 R 中创建制图

我正在尝试在 R 中制作地图以显示英国每个地区的出现次数。

我的数据目前如下所示:

我有所有 120 个观测值的经度和纬度。到目前为止,我已使用以下代码尝试生成图表:

这会生成英国地图,但我不确定如何将我自己的数据用于制图,而不是使用地图所基于的“wrld_simpl”数据中的人口数据。

有没有人有这样做的经验或知道另一种方法来达到预期的结果?谢谢!

0 投票
1 回答
423 浏览

javascript - D3.js - 从版本 2 中的 path.area 更改为版本 4

我正在尝试更新d3-cartogram以使用 D3.js 版本 4。到目前为止,一切都很好 - 我刚刚更新了所有函数,以便将它们写入版本 4 的扁平命名空间中。例如, 而不是d3.geo.path(), 它是d3.geoPath(). 我还更改了一些小东西,以便代码可以与最新版本的TopoJSON 一起使用。例如,不是topojson.object(topology, geom).coordinates,而是topojson.feature(topology, geom).geometry.coordinates

但是我遇到了一个我似乎无法解决的问题。该文件cartogram.js有一行内容为var areas = objects.map(path.area),其中objects是 TopoJSON 功能的集合。path.area在 D3.js 版本 2 和 4 中有所不同,我似乎无法调和它们。如果我在每个版本中进行控制台登录,它看起来像这样:

  • 版本 2:function (n){return n&&e.hasOwnProperty(n.type)?e[n.type](n):t}
  • 版本 4:function (t){return U_(t,r(Ag)),Ag.result()}

在版本 4 中,它记录错误:Uncaught TypeError: r is not a function. 自然,我已经用谷歌搜索了这个错误以及我正在尝试做的各种描述,但我没有任何运气。提前感谢您的帮助。

0 投票
1 回答
685 浏览

r - ggplot 离散图例连续数据

我是 R 编程新手,但我很享受编写代码的挑战!我通过将多个地图图拼接在一起创建了一个 GIF。不幸的是,我的图例引用了正在生成的地图的特定年份,因此,GIF 显示了一个图例,其标记上下移动。我认为解决方案是让图例引用整个数据框而不是给定的年份。我该怎么做呢?

GIF 链接: https ://1drv.ms/i/s!Ap-NxMqZOClHqgsFHSxo-kR1pLrr

0 投票
1 回答
193 浏览

r - 溶解 hexmap 多边形形状文件

我试图通过unionSpatialPolygonsoraggregate函数溶解内部多边形来生成六边形地图的轮廓。我得到了不溶解的杂散十六进制......一个显示问题的虚拟示例:

在此处输入图像描述

在此处输入图像描述

使用我实际使用的 shapefile(不适用于英国),我得到了更多的杂散六边形 - 有些是完整的 - 有些不是。

0 投票
1 回答
325 浏览

r - R中的制图不会像预期的那样扭曲国家

我正在使用cartogramR 中的包来制作活语言的世界地图。国家地图来自Natural Earth,语言计数来自Ethnologue

生活语言图表

我使用的数据在俄罗斯有 111 种生活语言,在中国有 299 种,几乎是三倍。但是,创建的地图仍然显示俄罗斯比中国大。

以下是每个国家的数据:

我究竟做错了什么?

编辑

按照 FuzzyLeapfrog 的回答,我删除了 Antarctica 并将地图转换为 Robinson 投影。

以下是三张图:墨卡托投影、罗宾逊投影、变形后。灰色调与现存语言的数量成正比(颜色越深,数量越大)。

墨卡托投影

罗宾逊投影

罗宾逊投影,变形

你不觉得俄罗斯还是比中国大,应该是中国的1/3吗?

编辑2

上面的 Natural Earth 地图是一个轻量级的 shapefile(.shp 只有 182 kB)。使用更详细的地图(.shp 6.5 MB),我得到了以下地图(罗宾逊投影和罗宾逊变形)。俄罗斯还是太大了!我想知道这个国家的原始大小是否会影响最终的形状(我认为它没有,但现在我认为它会影响)。可能有一个选项,以便原始大小不会影响最终结果?

详细的罗宾逊投影

详细罗宾逊变形

编辑3

我尝试了两个等面积投影,Mollweide 和 Lambert Cylindrical。下面是 Lambert 的结果,现在以红色显示,首先是投影图,然后是投影+变形图。越红,面积应该越大。但事实并非如此(只需将巴布亚新几内亚与澳大利亚进行比较)。

兰伯特等面积投影

兰伯特等面积投影 + 地图变形

我想知道package 中cartogram_cont的函数是否cartogram真的做了我认为它应该做的事情;帮助页面说它遵循“橡胶片失真算法(Dougenik et al. 1985)”。

0 投票
0 回答
127 浏览

r - 在 R Studio 中自定义制图输出的困难

我可以使用 Cartogram::cartogram_cont() 生成地图,但是很难自定义样式。

我已经使用 broom::tidy() 和 dplyr::left_join() 来强化制图,但我认为整洁的阶段可能干扰了 plotOrder。如果可能,我将包括输出图表。

我正在尝试复制这种类型的输出,但在我所在的地区。请注意,在 cartogram_cont() 中用于加权的数据集并不是特别重要,只是现阶段的概念证明:

0 投票
1 回答
780 浏览

r - 绘制制图时出错 - “此功能没有为经度/纬度数据提供正确的质心和距离。”

我正在尝试使用 maptools 包中的 wrld_simple 数据根据 2005 年的人口绘制涉及一些欧洲国家的地图:

使用 maptools 包,我得到了 wrld_simpl 数据,并检索了这些特定国家的数据:

到目前为止一切顺利,但是当我将其绘制出来时:

我尝试使用 Cartogram_cont:

我尝试将其转换为 sf,然后执行 st_transform(),但无济于事:

我假设我没有正确的投影值。我怎么知道设置得更好?如果我要使用“POP2005”以外的其他值,我该怎么做?图表中的“itermax”是什么意思(我不太明白给定的定义)

任何帮助将不胜感激,因为我对此很陌生。谢谢!!!!