问题标签 [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.
plot - 使用 spmap 绘制县的问题
我正在尝试通过县与县相关联的值来绘制美国大陆的县。我正在使用该spmap
软件包。我的形状文件来自: https ://www.census.gov/geo/maps-data/data/cbf/cbf_counties.html 。我正在使用 500k 版本。
我解压文件。然后我按如下方式加载地图:
如果我不想遮蔽县,一切都会完美:
但是,如果我执行以下操作(仅使用 _ID 作为此玩具示例的值),则只会填充少数几个县(地图要小得多,并且出现阿拉斯加):
该怎么办?
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 文件。再次感谢。
r - 在 R 中创建制图
我正在尝试在 R 中制作地图以显示英国每个地区的出现次数。
我的数据目前如下所示:
我有所有 120 个观测值的经度和纬度。到目前为止,我已使用以下代码尝试生成图表:
这会生成英国地图,但我不确定如何将我自己的数据用于制图,而不是使用地图所基于的“wrld_simpl”数据中的人口数据。
有没有人有这样做的经验或知道另一种方法来达到预期的结果?谢谢!
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
. 自然,我已经用谷歌搜索了这个错误以及我正在尝试做的各种描述,但我没有任何运气。提前感谢您的帮助。
r - ggplot 离散图例连续数据
我是 R 编程新手,但我很享受编写代码的挑战!我通过将多个地图图拼接在一起创建了一个 GIF。不幸的是,我的图例引用了正在生成的地图的特定年份,因此,GIF 显示了一个图例,其标记上下移动。我认为解决方案是让图例引用整个数据框而不是给定的年份。我该怎么做呢?
r - R中的制图不会像预期的那样扭曲国家
我正在使用cartogram
R 中的包来制作活语言的世界地图。国家地图来自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)”。
r - 在 R Studio 中自定义制图输出的困难
我可以使用 Cartogram::cartogram_cont() 生成地图,但是很难自定义样式。
我已经使用 broom::tidy() 和 dplyr::left_join() 来强化制图,但我认为整洁的阶段可能干扰了 plotOrder。如果可能,我将包括输出图表。
我正在尝试复制这种类型的输出,但在我所在的地区。请注意,在 cartogram_cont() 中用于加权的数据集并不是特别重要,只是现阶段的概念证明:
r - 绘制制图时出错 - “此功能没有为经度/纬度数据提供正确的质心和距离。”
我正在尝试使用 maptools 包中的 wrld_simple 数据根据 2005 年的人口绘制涉及一些欧洲国家的地图:
使用 maptools 包,我得到了 wrld_simpl 数据,并检索了这些特定国家的数据:
到目前为止一切顺利,但是当我将其绘制出来时:
我尝试使用 Cartogram_cont:
我尝试将其转换为 sf,然后执行 st_transform(),但无济于事:
我假设我没有正确的投影值。我怎么知道设置得更好?如果我要使用“POP2005”以外的其他值,我该怎么做?图表中的“itermax”是什么意思(我不太明白给定的定义)
任何帮助将不胜感激,因为我对此很陌生。谢谢!!!!