我可能不理解这些期望,但是,如果我按照stat_contour
's documentation的例子,我成功地获得了:
# Generate data
library(reshape2) # for melt
volcano3d <- melt(volcano)
names(volcano3d) <- c("x", "y", "z")
# Basic plot
v <- ggplot(volcano3d, aes(x, y, z = z))
v + stat_contour()
导致:
但是,当我尝试使用完全相同的数据类型 执行 完全相同的操作时,我有错误:
my_plt <- ggplot(diamonds, aes(depth, carat, z=price))
my_plt + stat_contour()
的产率:
Warning message:
Computation failed in `stat_contour()`:
(list) object cannot be coerced to type 'double'
我能想象的唯一潜在差异,特别是我收到的错误,是对象类型的差异。所以,这里有一些细节:
volcano3d
head(volcano3d)
x y z
1 1 1 100
2 2 1 101
3 3 1 102
4 4 1 103
5 5 1 104
6 6 1 105
和...
volcano3d %>% sapply(class)
x y z
"integer" "integer" "numeric"
diamonds
diamonds %>% select(depth, carat, price) %>% head
Source: local data frame [6 x 3]
depth carat price
(dbl) (dbl) (dbl)
1 61.5 0.23 326
2 59.8 0.21 326
3 56.9 0.23 327
4 62.4 0.29 334
5 63.3 0.31 335
6 62.8 0.24 336
和...
diamonds %>% select(depth, carat, price) %>% sapply(class)
depth carat price
"numeric" "numeric" "numeric"
我看不出有什么理由可以解决这些错误。任何想法??
根据Gregor的评论,似乎他是正确的:
stat_contour
函数只能处理x和y维度中的常规数据区间。例如,如果我们查看volcano3d
,x&amp; y图的尺寸完全&#34;常规&#34;:
volcano3d[seq(1,101,10),]
x y z
1 1 1 100
11 11 1 109
21 21 1 122
31 31 1 114
41 41 1 107
51 51 1 115
61 61 1 113
71 71 1 114
81 81 1 99
91 4 2 103
101 14 2 113
我很少有这种常规格式的数据。这使得该功能在应用中相当有限。虽然我认为数据可以聚合,分箱,然后在两个轴上重新投入数字格式,以允许进行一些偷工减料的尝试。
哦,好吧!我总是可以使用geom_raster
做一些几乎相同的事情,只是使用不同的可视化。
谢谢!