如何在ggplot2中排除热图中的异常值?

3

你好,

我试图在地图上绘制每平方的平均转化率。这很好用。问题是只有少数记录的正方形通常接近于0或1的极值。这使得绘图难以阅读。有没有办法排除那些没有达到特定记录数的正方形呢?或者设置颜色范围为例如0.3-0.7?

代码:

library(ggplot2)
library(ggmap)
manila_map <- get_map("Manila,Philippines", zoom=11)

map <- ggmap(manila_map)
map + stat_summary_2d(
   geom = "tile", 
   data = data,
   fun = "mean",
   binwidth = 0.02,
   aes(x = lon, y = lat, z = requested),
   alpha = 0.4
) +
scale_fill_gradient2(low = "red", mid = "yellow", high = "#007f00", midpoint=0.5)

enter image description here


你有SO用户的样本数据吗?如果有的话,能上传一下吗? - jazzurro
1个回答

3
首先,将数据集中的异常值更改为NA
data$requested <- ifelse(data$requested <= 0.7 & data$requested >= 0.3, 
                         data$requested, NA)

接着,在 scale_fill_gradient() 中加入 na.value,将 NA 值设为中性颜色。

scale_fill_gradient2(low = "red", mid = "yellow", high = "#007f00", midpoint=0.5, 
                     na.value = "grey50")

很好的解决方法@Jan Boyer。问题在于,如果数据已经有NAs,那么异常值将与缺失值混淆。 - GitHunter0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接