我正在尝试使用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))
那会给你: