首页 > 解决方案 > 使用 ggplot2 创建等高线图时出错?

问题描述

我有一个矩阵,我想制作一个等高线图。起初,我尝试了contourR 中的函数,得到了下图。

但是,轮廓线不平滑,x & y 标签也不正确。所以我想用它ggplot2来制作一个平滑的等高线图。但是,ggplot2会产生错误:

Computation failed in `stat_contour()`:
  Contour requires single `z` at each combination of `x` and `y`.

数据可在https://www.dropbox.com/s/1obn2xxcra10usl/data1.rdata?dl=0

load("data1.rdata",.GlobalEnv)
contour(data1)

在此处输入图像描述

这是我尝试使用的代码ggplot2

library(reshape2)
library(ggplot2)
data1_melt = melt(data1)
names(data1_melt) <- c("y", "x", "pr")

ggplot(data1_melt, aes(x = x, y = y, z = pr)) + stat_contour()

标签: rggplot2

解决方案


错误来自重复y值。如果您查看原始文件data1,您会看到重复的行名,可能是由于四舍五入或小数截断。您必须首先只保留唯一值。

删除重复的y值。

sp <- split(data1_melt, data1_melt$x)
sp <- lapply(sp, function(DF) {
  i <- !duplicated(DF[["y"]])
  DF[i, ]
})

data1_melt <- do.call(rbind, sp)
rm(sp)

ggplot(data1_melt, aes(x = x, y = y, z = pr)) +
  geom_contour()

在此处输入图像描述


推荐阅读