我有一个带有图例渐变的地图,我想为NA值添加一个框.我的问题非常类似于这一个和这一个.我也读过这个话题,但我找不到某个"好"的解决方案或者可能没有?
这是一个可重复的例子:
library(ggplot2)
map <- map_data("world")
map$value <- setNames(sample(-50:50, length(unique(map$region)), TRUE),
unique(map$region))[map$region]
map[map$region == "Russia", "value"] <- NA
ggplot() +
geom_polygon(data = map,
aes(long, lat, group = group, fill = value)) +
scale_fill_gradient2(low = "brown3", mid = "cornsilk1", high = "turquoise4",
limits = c(-50, 50),
na.value = "black")
Run Code Online (Sandbox Code Playgroud)
所以我想为俄罗斯的NA值添加一个黑盒子.我知道,我可以用数字代替NA,所以它会出现在渐变中,我想,我可以编写如下的解决方法,但所有这些解决方法对我来说似乎不是一个很好的解决方案,我也想避免"无意义"的警告:
ggplot() +
geom_polygon(data = map,
aes(long, lat, group = group, fill = value)) +
scale_fill_gradient2(low = "brown3", mid = "cornsilk1", high = "turquoise4",
limits = …Run Code Online (Sandbox Code Playgroud) 我有一个这样的情节:
data <- data.frame(time = c("time1", "time2", "time1"),
sex = c("m", "f", NA))
ggplot(data = data) +
geom_bar(aes(x = time, y = (..count..)/sum(..count..),
fill = sex),
position = "fill") +
scale_y_continuous(name = "percentation",
labels = scales::percent)
Run Code Online (Sandbox Code Playgroud)
我正在尝试更改 NA 值的标签和颜色。我用过scale_fill_manual像添加
scale_fill_manual(labels = c("m" = "male",
"f" = "female",
"NA" = "unknown"),
values = c("m" = "blue",
"f" = "red",
"NA" = "green"))
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用,所以我想问一下,这里有人可以帮助我解决这个问题吗?是否有特殊的词或其他东西来选择 NA 值?另外,我想保留直接分配,而"m" = "male"不是仅仅通过编写"male"来控制分配。