Я пытаюсь наложить два разных гексагональных тепловых графика, один из которых показывает вероятность интродукции вида, а другой показывает, занимает ли этот вид этот район или нет. По сути, все уже занятые шестиугольники должны быть черными, тогда как все остальные шестиугольники должны отображать вероятность введения.
Вот некоторые неуклюжие выборочные данные.
df <- data.frame(latitude = rep(seq(1,10,1),10),
longitude = rep(1:10, each=10),
already_there = rbinom(100,1,0.1),
introduction_probability = rbinom(100,100,0.5)/100)
Я попытался просто добавить geom_hexаргумент с пределом счетчика, установленным в 1, так что как только мы получим какие-либо вхождения внутри шестиугольника, он станет черным.
ggplot(data=df) +
stat_summary_hex(aes(x = longitude,
y = latitude,
z = introduction_probability),
binwidth = c(2,2)) +
scale_fill_gradient2(mid="yellow", high="red",
breaks=seq(0,1,0.25),
limits=c(0,1)) +
geom_hex(aes(x = longitude,
y = latitude,
z = already_there),
binwidth=c(2,2)) +
scale_fill_gradient2(mid="gray", high="black",
breaks=seq(0,1,0.25), limits=c(0,1))
Но, конечно, вторая команда заполнения просто переопределяет первую. Есть идеи, как это решить? Альтернативы приветствуются. Я попытался написать ручную функцию для вставки предложения ifelse, чтобы получить другой результат, если шестиугольник уже занят, но не повезло.