我最近一直在使用ggplot2来创建一堆等值线.我想知道是否可以使用ggplot2来创建类似于此的地图(来自WorldMapper):

这是一个等角度,其中shapefile多边形被扭曲以表示相对人口数.我相信这被称为制图.他们用一堆其他变量做到这一点.本着Choropleth R Challenge的精神,有谁知道如何使用R?
如果有人不知道:制图是一种地图类型,其中一些依赖于国家/地区的数字属性缩放相应的区域,以便该属性的密度(接近)恒定.一个例子是

来自worldmapper.org.在这个例子中,国家根据人口规模进行调整,导致人口密度接近恒定.
不用说,这真的很酷.有没有人知道用于绘制此类地图的基于Matplotlib的库?worldmapper.org中使用的方法在(1)中描述,所以如果还没有人实现这个,我会感到惊讶......
我也有兴趣听说其他的图纸库,即使它们不是为Matplotlib制作的.
(1)Michael T. Gastner和MEJ Newman,基于扩散的密度均衡图制作方法,Proc.纳特.科学院.科学.美国,101,7499-7504(2004).可在arXiv上购买.
我试图在这个问题中做同样的事情,在R中的Cartogram + choropleth map,但是从SpatialPolygonsDataFrame开始并希望最终得到相同类型的对象.
我可以将对象保存为shapefile,使用scapetoad,重新打开它并转换回来,但我宁愿将它全部放在R中,以便程序完全可重现,这样我就可以自动编写几十种变体.
我已经在github上分配了Rcartogram代码,并在此处添加了我的努力.
本演示的基本内容是在地图上创建一个SpatialGrid,在网格的每个点查找人口密度,并将其转换为cartogram()处理所需格式的密度矩阵.到现在为止还挺好.
但是,如何根据输出来插入原始地图点cartogram()?
这里有两个问题.第一种是将地图和网格放入相同的单位以允许插值.第二种是访问每个多边形的每个点,对其进行插值,并使它们保持正确的顺序.
网格以网格为单位,地图以投影单位表示(在示例longlat的情况下).必须将网格投影到longlat中,或将地图投影到网格单元中.我的想法是制作一个伪CRS并将其与spTransform()函数一起使用package(rgdal),因为它可以轻松处理对象中的每个点.
访问每个点很困难,因为它们是SpPDF对象的几个层:对象>多边形>多边形>线>坐标我认为.任何想法如何访问这些,同时保持整个地图的结构完整?
我可以使用什么算法来生成加权图表,如下所示:
?
我可以使用R,.NET库和PostGIS中的代码生成shapefile图.但是,我找不到用于查找用于生成这些扭曲的shapefile图的算法的实现的搜索项.不一定只想绘制世界地图,因此必须能够使用任意shapefile.
我正在尝试建立像这里的制图
从链接安装不起作用:
`install.packages('Rcartogram', repos = 'http://www.omegahat.org/R', type = 'source')`
Installing package into ‘C:/Users/Milena/Documents/R/win-library/3.2’
(as `lib` is unspecified)
Warning in install.packages :
package ‘Rcartogram’ is not available (for R version 3.2.0)
Run Code Online (Sandbox Code Playgroud)
从zip文件中都没有:
install.packages("C:/Users/Milena/Downloads/Rcartogram_0.2-2.tar.gz", repos = NULL, type = "source")将软件包安装到'C:/Users/Milena/Documents/R/win-library/3.2'(
lib未指定)*安装源包Rcartogram...**********************************************
WARNING: this package has a configure script It probably needs manual configuration ************************************************libs
***arch - i386警告:运行命令'make -f"Makevars"-f"C:/PROGRA~1/R/R-3.2.0/etc/i386/Makeconf"-f"C:/ PROGRA~1 /R/R-3.2.0/share/make/winshlib.mk"SHLIB ="Rcartogram.dll"OBJECTS ="Rcart.o cart.o"'状态为127 ERROR:包'Rcartogram'*删除'的编译失败C:/Users/Milena/Documents/R/win-library/3.2/Rcartogram'instault.packages中的警告:运行命令'"C:/PROGRA~1/R/R-3.2.0/bin/x64/R" CMD INSTALL -l"C:\ Users\Milena\Documents\R\win-library\3.2""C:/Users/Milena/Downloads/Rcartogram_0.2-2.tar.gz"'安装时状态为1警告.包:安装包'C:/Users/Milena/Downloads/Rcartogram_0.2-2.tar.gz'具有非零退出状态
我怎么解决这个问题?
我正在使用Windows机器. …
我正在尝试更新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中是不同的,我似乎无法调和它们.如果我控制台在每个版本中记录它,它看起来像这样:
function (n){return n&&e.hasOwnProperty(n.type)?e[n.type](n):t}function (t){return U_(t,r(Ag)),Ag.result()}在版本4中,它记录错误:Uncaught TypeError: r is not a function.当然,我已经用Google搜索了错误以及我正在尝试做的各种描述,但我没有运气.在此先感谢您的帮助.
cartogram ×6
r ×4
c# ×1
cartography ×1
d3.js ×1
ggplot2 ×1
javascript ×1
maps ×1
matplotlib ×1
postgis ×1
rgdal ×1
shapefile ×1
topojson ×1
windows ×1