我有一个比这个大得多的数据框的以下部分:
x y A
1 1 0.1176405
2 2 0.1176405
3 3 0.1219375
4 4 0.09942536
5 5 0.1031696
6 6 0.1384145
我正在尝试使用ggplot2绘图:
p <- ggplot(df, aes(x,y)) +
geom_tile(aes(fill=A))+
scale_fill_gradient(low = "black", high = "red")
但我总是得到这个错误:
Error: Non-continuous variable supplied to scale_fill_gradient.
当我在绘图中尝试as.numeric(A)
时,它确实有效但绘图中的值看起来很奇怪,并且没有显示我的值。
这是str()
的输出:
'data.frame': 289 obs. of 3 variables:
$ x: num 1 2 3 4 5 ...
$ y: num 1 2 3 4 5 6 7 8 9 10 ...
$ A: Factor w/ 181 levels "0.1176405","0.1219375",..: 1 1 2 3 4 4 5 6 7 8 ...
那么我该怎样做才能使这个情节有用呢?
答案 0 :(得分:2)
您数据框中的A
似乎是一个因素,需要转换为数字。尝试:
df$A <- as.numeric(as.character(df$A))
然后运行您的代码。
使用as.numeric
将数据转换为数字而不先转换为字符是一个常见问题:
as.numeric(factor(50:55))
[1] 1 2 3 4 5 6
见R Inferno 8.2.1