例如,我想使用 ggpattern 的条纹来填充值大于 50 的区域。但是 breaks 参数(可能是我的问题)无法达到我想要的结果。
library(tidyverse)
d <- expand.grid(x = 1:10 ,y=1:10)
d$value <- 1:100
# The target area is concentrated in the upper right corner
ggplot(data = d,aes(x = x,y = y,fill = value))+
geom_tile()
ggplot(d)+
stat_contour_filled(aes(x = x, y = y, z = value),
breaks = c(-Inf, 50, Inf),
geom = ggpattern::GeomPolygonPattern,
pattern_angle = 60,
fill = 'transparent', color = NA,
pattern = 'stripe',
pattern_fill = 'black',
pattern_density = 0.001,
pattern_spacing = 0.03,
pattern_size = 0.3) +
scale_pattern_manual(values = c(NA,'stripe'))
或者
ggplot(d)+
stat_contour_filled(aes(x = x, y = y, z = value>50),
geom = ggpattern::GeomPolygonPattern,
pattern_angle = 60,
fill = 'transparent', color = NA,
pattern = 'stripe',
pattern_fill = 'black',
pattern_density = 0.001,
pattern_spacing = 0.03,
pattern_size = 0.3)
您想将
pattern
美学映射到变量,因此需要将其移动到aes()
函数内部:ggpattern
关于选项的说明这对我来说运行良好,但对于 OP 返回了错误:
这似乎与R 4.1 中引入的
ggpattern
选项有关,因为我可以通过设置来重现它options(ggpattern_use_R4.1_gradients = FALSE, ggpattern_use_R4.1_masks = FALSE)
。以下选项解决了该错误: