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

R: Isotherms as isolines using 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()

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

图片:

正如您在上图中所见,数据似乎适用于 stat_contour() 部分,看起来很完美,但不适用于 geom_tile(),仅似乎创造了那三条水平线。数据似乎被正确读取,因为等高线有效并且图例也包含正确的值。我不知道为什么文件不会被填充。

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

这可能是由于网格不规则造成的。先尝试插值,然后绘制:

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