R:等温线使用ggplot2作为等值线

oep*_*pix 3 r contour tile ggplot2

我正在尝试使用ggplot2包创建一个等温线图,您可以在注释中找到显示所需结果的示例.我在网上看过很多例子,例如:

data <- read.table("http://s000.tinyupload.com/download.php?file_id=01371475872599670620&t=0137147587259967062053048", header=TRUE)

ggplot(data) + aes(x=x, y=y, z=z, fill=z) + stat_contour() + geom_tile()
Run Code Online (Sandbox Code Playgroud)

当我对我的数据使用完全相同的代码时,我得到以下结果:

图片:

等值线图

正如您在上图中所看到的,数据似乎与stat_contour()部分一起使用,看起来很完美,但它不适用于geom_tile(),它似乎只创建了这三条水平线.数据似乎正确读取,因为轮廓线有效,图例也包含正确的值.我不知道为什么这些文件不会被填满.

我非常感谢您提供的任何帮助,谢谢!

hrb*_*str 8

由于网格不规则,可能会发生这种情况.首先尝试插值,然后执行绘图:

library(ggplot2)
library(akima)
library(viridis)
library(ggthemes)

dat <- read.table("http://s000.tinyupload.com/download.php?file_id=01371475872599670620&t=0137147587259967062053048", header=TRUE)

di <- interp(dat$x, dat$y, dat$z,
             xo=seq(min(dat$x), max(dat$x), length=200),
             yo=seq(min(dat$y), max(dat$y), length=200))

dat_interp <- data.frame(expand.grid(x=di$x, y=di$y), z=c(di$z))

ggplot(dat_interp) +
  aes(x=x, y=y, z=z, fill=z) +
  geom_tile() +
  stat_contour(color="white", size=0.25) +
  scale_fill_viridis() +
  theme_tufte(base_family="Helvetica")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述