帮助选择最合适的双变量拟色映射着色方案


10

我正在尝试在数值变量的覆盖范围内覆盖名义变量(2类-雨育vs灌溉)。

在此处输入图片说明

为了突出两种类别在样式上的差异,我概述了一种具有不同颜色的类别(灌溉区域为“红色”),而未着色的类别为雨养区域。

但是,地图感觉很混乱,轮廓与数字变量的较深阴影混合在一起。

我试图避免使用两种不同的颜色着色方案来表示两个类别,因为我认为这会隐藏基础变量的整体分布。

有没有更好的方法可以使用R中的ggplots2包来表示这种双变量分类(我目前正在使用它来制作所附的图)?

这些地图最终将被打印在纸上。


考虑计算灌溉区域边界上的欧几里得距离。此处有更多详细信息:gis.stackexchange.com/q/53163/8104
亚伦

@Aaron,感谢您的链接,方向阴影可能适用于此,我可以使用缓冲工具在R中绘制这些区域。不过,我唯一关心的是多边形的尺寸相对较小,可能会受到较宽范围的影响。轮廓。我会尝试的。
varungoel123 2014年

@ varungoel123我使用rasterrasterVis软件包发布了R解决方案,您可能对此感兴趣。
thiagoveloso

Answers:


7

除了使用轮廓线指示灌溉区域外,还应使用透明的填充图案(例如线条,阴影)。一个例子看起来像这样:

http://www.geog.fu-berlin.de/de/Karto/umn_karten/bilder/komb2.png

或只是谷歌的“地图填充模式”来获得选项的概述。仅对灌溉区域使用轮廓会给人以灌溉不是连续现象的印象。


这是一个很好的建议。有没有办法在ggplot2或R中的其他软件包中做到这一点?我有大约60-70张地图,其中雨养区与灌溉区的标记保持不变。使用ggplot2,我能够自动化地图制作,而使用ArcMap或Qgis则无法实现这一点
varungoel123 2014年

我对ggplot2或R不熟悉。但是,这种填充模式是相当标准的事情,应该很难实现。我知道如何在Qgis或ArcMap中做到这一点。在这两个程序中,您可以在定义样式后保存该样式并重复使用。两者都应该可以实现自动化。python脚本或arcpy可以为您完成这项工作。
克里斯·P

1
不幸的是,ggplot并不擅长填充模式(但请参见此处以了解替代方法)
cengel 2014年

版本2.0.1中的QGis也提供了自动地图制作功能
Zbynek 2014年

1

我最近不得不做一张类似的地图。我想出的解决方案使用rasterVis软件包,而不是ggplot2(顺便说一句,这是一个很棒的软件包)。

就我而言,我有一个随时间变化的趋势图(也是一个数字变量),还有一个显示趋势的重要性的图(从统计检验中获得)。

就我而言,我想在数字图的顶部绘制重要性图,类似于“点画”模式,以显示置信度更高的位置。

这大致是我用来创建地图的代码。

require(raster)
require(rasterVis)

# Scratch raster objects
data(volcano)
r1 <- raster(volcano)

over <- ifelse(volcano >=160 & volcano <=180, 1, NA) # This is the "mask" raster
r2 <- raster(over)

# And this is the key step:
# To convert the "mask" raster to spatial points
r.mask <- rasterToPoints(r2, spatial=TRUE)

# Plot
levelplot(r1, margin=F) +
layer(sp.points(r.mask, pch=20, cex=0.3, alpha=0.8))

您可以通过以下方式更改代码:

1)创建一个“二进制”栅格,例如0进行雨水灌溉,1进行灌溉,然后像我一样对它进行绘制;或者

2)创建两个不同的蒙版,一个用于雨养,另一个用于灌溉,并将它们作为不同的对象绘制(例如,圆圈用于雨养,而十字用于雨养)。

我认为第二种选择会使地图看起来在视觉上“被污染”,但是您始终可以通过参考sp软件包文档(特别是)来控制点的参数?sp.points

希望能帮助到你。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.