ggplot2 geom_tile:绘制非连续数据时如何在行之间没有间距

Cor*_*ius 7 plot r ggplot2

我正在尝试使用ggplot2为(气象)变量做一个水平图.变量在时间上连续测量(我的x轴),但在每个时间步长的非连续高度(y轴).因此,生成的图显示了指定高度(y坐标)的数据,但两者之间没有任何内容.这是一个例子:

library(ggplot2)
data <- runif(400, min=0, max=10)
index <- c(1:20)
heights <- c(1,2,3,4,5,7,9,12,15,19,23,28,33,39,45,52,59,67,75,83)
dat <-     as.data.frame(cbind(expand.grid(X=index,Y=heights),data))                        
ggplot(dat, aes(x=dat[,1], y=dat[,2],z=dat[,3])) +geom_tile(aes(fill=dat[,3]))
Run Code Online (Sandbox Code Playgroud)

这会产生以下情节: 图像在这里

是否有一种简单的方法可以完全填充图形,即使图形上部的线条更宽广?谢谢!

Ste*_*son 4

好的,还有一种解决方案..您可以使用该approx函数进行插值。虽然也许二维克里金法更适合您的应用???

library(purrr)
dat2<- dat %>%
  split(.$X) %>%
  map_dfr(~ approx(.$Y, .$data, xout =1:83), .id = "X") 

ggplot(dat2, aes(x=as.integer(dat2$X), y=dat2$x, z=dat2$y)) +geom_tile(aes(fill=dat2$y))
Run Code Online (Sandbox Code Playgroud)

这会给你: 在此输入图像描述