使用geom tile和scale_gradient_manual绘制离散值

时间:2012-03-08 15:59:28

标签: r ggplot2

我有一个比这个大得多的数据框的以下部分:

    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 ...

那么我该怎样做才能使这个情节有用呢?

1 个答案:

答案 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