Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot-在不同颜色范围内映射低于和高于阈值的值_R_Ggplot2_Raster_R Raster_Legend Properties - Fatal编程技术网

R ggplot-在不同颜色范围内映射低于和高于阈值的值

R ggplot-在不同颜色范围内映射低于和高于阈值的值,r,ggplot2,raster,r-raster,legend-properties,R,Ggplot2,Raster,R Raster,Legend Properties,在下面的示例中,我希望在蓝色配色方案中为大于100的值着色(从最接近100的浅蓝色到最大值的深蓝色),在暖色范围中为小于100的值着色(从最接近100的黄色到最小值的红色)。请参见下面的颜色范围示例。有人能帮我一下吗?我尝试过几种不同的方法(包括下面的方法),但都没有成功。非常感谢 #库 图书馆(光栅) 图书馆(GG2) 图书馆(地图工具) 数据(“wrld_siml”) #样品光栅 r一个选项可以是设置颜色的个人ifelse功能 colour_func <- function(x){

在下面的示例中,我希望在蓝色配色方案中为大于100的值着色(从最接近100的浅蓝色到最大值的深蓝色),在暖色范围中为小于100的值着色(从最接近100的黄色到最小值的红色)。请参见下面的颜色范围示例。有人能帮我一下吗?我尝试过几种不同的方法(包括下面的方法),但都没有成功。非常感谢

#库
图书馆(光栅)
图书馆(GG2)
图书馆(地图工具)
数据(“wrld_siml”)
#样品光栅

r一个选项可以是设置颜色的个人
ifelse
功能

colour_func <- function(x){
       ifelse(x$x > 150, 'darkblue',
  ifelse(x$x > 130, 'cyan4',
  ifelse(x$x > 110, 'cadetblue3',
     ifelse(x$x > 100, 'cadetblue', 
                              ifelse(x$x > 90, 'red',
                                     ifelse(x$x > 60, 'darkorange3', 
                                            ifelse(x$x > 40, 'darkorange', 
                                                   ifelse(x$x > 20, 'goldenrod2', "gold"))))))))
}

> #plotting
> p <- ggplot()
> p <- p + geom_raster(data = var_df , aes(x = x, y = y, fill = layer))
> p <- p + coord_equal()
> p <- p + scale_fill_gradientn(colours = colour_func(var_df))
> p
colour_func 150,'darkblue',
如果是(x$x>130,'cyan4',
如果其他(x$x>110,'cadetblue3',
如果其他(x$x>100,'cadetblue',
如果其他(x$x>90,'红色',
如果其他(x$x>60,'darkorange3',
如果其他(x$x>40,'darkorange',
ifelse(x$x>20,'goldenrod2',“gold”()()()()()()(41
}
>#绘图
>p p p

嗯。。。那么,你真的希望它在layer=100的位置被拆分吗

如果是,

#plotting
p <- ggplot() 
p <- p + geom_raster(data = var_df , aes(x = x, y = y, fill = layer))
p <- p + coord_equal()
p <- p + scale_fill_gradientn(
  colours=c("red", "yellow", "skyblue", "darkblue"),
  values = rescale(c(min(var_df$layer),
                     100,
                     100.01,
                     max(var_df$layer))))
#绘图

p谢谢你强调这一困惑,我刚刚添加了一个我希望在ggplot2中创建的色阶示例。aaaah明白了!:)一个愚蠢的方法是将数据分割成两个数据帧,然后用两个单独的梯度相互叠加来绘制它们。但希望有比这更优雅的方式!非常感谢,我想再次显示我编辑的颜色的更清晰变化(例如,101值为蓝色,99值为黄色)。如果我仍有误解,请告诉我!:)非常感谢你。这正是我想要的。注:对于R的初学者:我还使用了库(音阶)
#plotting
p <- ggplot() 
p <- p + geom_raster(data = var_df , aes(x = x, y = y, fill = layer))
p <- p + coord_equal()
p <- p + scale_fill_gradientn(
  colours=c("red", "yellow", "skyblue", "darkblue"),
  values = rescale(c(min(var_df$layer),
                     100,
                     100.01,
                     max(var_df$layer))))