geom_raster给出“条纹”结果

时间:2018-11-22 12:52:28

标签: r ggplot2 raster

我正在尝试使用ggplot2创建栅格图

我的数据如下:

freqData <- data.frame(cells = rep(1:27, each = 101),
                       frequency = rep(1/seq(1, 1001, 10), 27),
                       power = rnorm(101*27))

现在,当我这样做

ggplot(freqData, aes(frequency, cells)) + 
  geom_raster(aes(fill = power), interpolate = T) 

我明白了

raster plot

有趣的是,放大显示如下:

zoom in

如果我尝试将频率定义为seq(1, 1001, 10)(即不使用1 /),那么一切都会按预期进行。

我可能在这里缺少真正明显的东西,有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

看起来插值仅在局部区域内有效。 垂直线是我们拥有的x点。我认为栅格的主要用途是用于等距的x和y数据点,例如https://ggplot2.tidyverse.org/reference/geom_tile.html中的示例,它在x轴上具有相同的差异。您的情况确实非常极端,因为1 /(1,10,20)...很快收敛到0

dt <- expand.grid(x=c(.01,.05,.15,.5,1),
                  y=seq(0,5,.1))
dt$power <- rnorm(1:nrow(dt))

ggplot(dt, aes(x, y)) + 
  geom_raster(aes(fill = power), interpolate = T) +
  geom_vline(xintercept = unique(dt$x))

抱歉,除了尝试使用等间距的数据外,无法提供其他解决方案...希望有人有更好的答案:)