- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一张世界地图,用不同变量值的灰色阴影填充国家/地区。对于具有 NA 值的国家/地区,我想用之字形、斜线或影线填充它们。最终 map 将是黑白的,因此过多的灰色或彩色阴影不会产生可区分的结果。我想为因子变量 (0-3) 的值设置不同的灰色阴影,并为 NA 值设置一个模式。现在,代码对 na.value 说“蓝色”,但它必须改变。
ggplot(CRSVmap, aes(map_id = region, fill = as.factor(SV)))+
geom_map(map = CRSVmap, color = "black")+
scale_fill_grey(start = 0.99, end = 0.1, na.value = "blue")
最佳答案
这是一个非常棘手的解决方案,可能需要进行一些调整。我切换到 sf
以简化一些空间操作。
要做的第一件事是将具有 NA
值的映射设为空白——通过将 NA
值映射到 alpha 并将该 alpha 设置为 0 来实现这一点。
我看到@JonSpring 关于 ggtextures
的评论包(看起来它仍处于测试阶段)并开始摆弄它。诀窍在于,截至目前,ggtextures
只能生成条形和矩形,而不是填充 map 中缺失区域所需的更复杂的形状。
相反,制作一个与整个 map 大小相同的矩形,并用纹理填充它(我制作了一个小的阴影 SVG 文件 here )。最重要的是,添加一个图层来遮盖水域——否则纹理会透过那里显示出来。我通过获取 map 边界框和陆地区域之间的空间差异来制作掩码。
library(ggplot2)
library(dplyr)
library(sf)
library(ggtextures)
data(wrld_simpl, package = "maptools")
set.seed(10)
world <- st_as_sf(wrld_simpl) %>%
select(name = NAME, geometry) %>%
mutate(value = sample(c(letters[1:4], NA), size = nrow(.), replace = T))
world_bbox <- st_bbox(world)
world_inv <- st_difference(st_as_sfc(world_bbox), st_union(world)) %>%
st_combine()
首先,只是面具(可能更干净):
ggplot(world) +
geom_sf(data = world_inv, fill = "white")
将所有层加起来,并一起构建两个图例,一个用于缺少 NA
的颜色,一个用于标记 NA
的图像。
pattern <- tibble(
xmin = world_bbox$xmin, xmax = world_bbox$xmax, ymin = world_bbox$ymin, ymax = world_bbox$ymax,
image = "diagonals"
)
ggplot(world) +
geom_textured_rect(aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax, image = image),
data = pattern, img_width = unit(0.8, "in"), img_height = unit(0.8, "in")) +
geom_sf(aes(fill = value, alpha = is.na(value))) +
geom_sf(data = world_inv, fill = "white") +
scale_fill_grey(breaks = letters[1:4]) +
scale_alpha_manual(values = c("TRUE" = 0, "FALSE" = 1), guide = NULL) +
scale_image_manual(values = c("diagonals" = "hatching.svg"), name = NULL, labels = c("NA"))
肯定还有一些您需要调整的地方,但希望这是一个开始。
关于r - 如何用锯齿形或斜线填充 ggplot geom_map 中的 NA 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58228137/
我有这个代码: set_value(X,Value,[X/_|T],[X/Value|T]). set_value(X,Value,[Y/V|T],[Y/V|NewT):- X\=Y,set_valu
如何绘制非正交线? 如果我们有一条正交线,那就很简单了: 考虑 X1 = 100,Y1 = 80; X2=100,Y2=185; 所以对于这条线我们有类似的东西。 for(nRow = Y1; nRo
如何使用 CSS 实现斜斜线 (/)?它应该具有响应能力并且还应该支持 IE 8? 最佳答案 你可以使用一个元素,用伪元素和边框隐藏不需要的部分(IE8支持): div{ position:r
我正在通过 PayPal SDK 为 REST API 创建支付。一切似乎都正常,重定向到 paypal,付款本身。但是当我从 paypal 返回我的商店时,returnUrl 的末尾添加了一个“/”
我的值为: 1/2 3/4/5 2/3/6 我想求值2所以结果一定是 1/2 2/3/6 我不想使用 LIKE 运算符。有没有办法在 FIND_IN_SET 函数中设置分隔符? 最佳答案 您可以使用l
我已经设置了我的第一个 REST API,并且我是使用 Taffy 框架的新手。 我有一个使用 ColdFusion 10、IIS 并使用 ColdBox 的站点。我在目录中设置了一个 hello w
当我在 website.com/seo.php 上输入 htaccess 代码时,它重定向到 website.com/seo,但我希望它执行 website.com/seo/ 我的 htaccess
这个问题在这里已经有了答案: Bare asterisk in function arguments? (6 个回答) What does the slash mean in help() outpu
我团队中的一个人在处理他从我们的 SVN 获得的项目时遇到了问题。当他尝试运行文件时出现错误: java.lang.NoClassDefFoundError: misc\test (wrong nam
我是 Laravel 的新手,它似乎是一个很棒的框架,但我对路由有疑问。我想将所有获取请求路由到一个名为 PageController@view 的 Controller 操作,但是当前缀是 admi
我想重定向域中的所有 url: http://exampledomain.com 到特定地址上的新域,该地址仅在地址末尾没有尾部斜杠的情况下有效 http://www.newdomain.com/12
在本地出现 2 个错误(两种情况下的代码几乎相同): PS C:\Users\jonat\Projects\latex_classifier> cargo test --release Fin
我正在从一个存在许多不一致的旧应用程序重建一个 Web 应用程序。我必须将所有数据从旧数据库迁移到我们的新结构。 在旧数据库中,日期以 VARCHAR 形式存储在 MySQL 数据库中。 我们位于英国
这实际上只是一个语法问题。 我有一个 PHP 脚本,可以解析我的 WordPress 提要并返回最新的帖子。我还希望我的脚本能够解析评论数量,但是用于评论数量的 WordPress 提要 XML 对象
假设我想要一个单例 里面的东西将其文本/内容分成三列,高度尽可能相等。如何做到这一点? 最佳答案 这是 CSS3 column layout .目前,它通过 vendor 标签得到支持。样本可以在 t
我正在尝试为输入 mm/yy 字段添加功能,这样当用户输入 2 位数字时,会自动添加斜线“/”。 这是我的文本输入 最佳答案 我刚刚在我的应用程序中做了类似的事情,在电话号码中添加了一个“-”:)这
我是一名优秀的程序员,十分优秀!