2015-04-06 171 views
5

我正在尝试使用ggplot2而不是栅格包图函数制作栅格图以获取一些不相关的原因。在ggplot2中更改栅格图的颜色

我想缩放颜色,使图上的最低温度是蓝色,图上的最高温度是红色,而中间范围是白色。我已经尝试了ggplot2的许多功能,并且一直未能获得所需的结果。这就是我想要的:

plot showing desired color ramp from raster package

这里是我的GGPLOT2代码的当前状态:

library(raster) 
library(ggplot2) 
library(scales) 

r = raster() 
r[] = 1:ncell(r) 

df = as.data.frame(r, xy=TRUE) 

the_plot = ggplot(df) + 
    geom_raster(aes(x, y, fill=layer)) + 
    scale_fill_gradient2(low=muted('red'), mid='white', high=muted('blue')) 
print(the_plot) 

其中,而不是期望的颜色渐变,产生这样的:

ggplot2 scale_fill_gradient2() fail

任何建议,非常感谢!

+0

小心分享一些数据?所以我们可以重新创建情节。您是否尝试过scale_fill_discrete或scale_fill_hue? – infominer

+0

您是否尝试将'midpoint'参数设置为'scale_fill_gradient2'? – Gregor

回答

5

刚刚尝试过您的示例数据集,下面的代码适用于我。

the_plot = ggplot(df) + 
    geom_raster(aes(x, y, fill=layer)) + 
    scale_fill_gradientn(colours=c("#0000FFFF","#FFFFFFFF","#FF0000FF")) 
print(the_plot) 

RGB颜色需要调整为准确的所需的蓝色/红色阴影,但它似乎工作。

plot showing the result