我正在尝试使用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]))


这将产生以下图:


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

最佳答案

好的,还有一个解决方案..您可以使用approx函数进行插值。虽然2D克里金法可能更适合您的应用程序???

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))


那会给你:
r - ggplot2 geom_tile:绘制非连续数据时如何在行之间没有间距-LMLPHP

08-24 18:05