我正在尝试使用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)
这会产生以下情节:

是否有一种简单的方法可以完全填充图形,即使图形上部的线条更宽广?谢谢!
好的,还有一种解决方案..您可以使用该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)