固定特定值的颜色

时间:2012-05-03 17:04:42

标签: r colors

我正在尝试制作温度图,一切正常,但我不知道如何使用固定的调色板。

其实我有这个:

rgb.palette <- colorRampPalette(c("blue","green","yellow","orange","red"), 
                                space = "Lab")

image.plot(akima.smooth, 
           col = rgb.palette(NBR.COLORS), 
           main=main_title, 
           horizontal=TRUE,
           axes=TRUE)

此解决方案有效但绘制的颜色始终从蓝色变为红色。

例如,如果地图上的最低温度为-10°C,颜色将为蓝色,但如果最低温度为+ 25°C,则另一个地图中的颜色也为蓝色。

如何定义固定颜色面板,例如:

-30°C => blue
-20°C => light blue
-10°C => dark green
  0°C => green
 10°C => yellow

如果在地图1中最低温度是-20我想要“淡蓝色”而在地图2中如果最低温度是10°C我想要“黄色”颜色。

2 个答案:

答案 0 :(得分:4)

如果是fields:::image.plot(),则查看函数?image的参数。特别是需要breaks参数来设置用于将输入数据分解为绘图类的切割点边界的值。

您遇到的问题是,如果您未设置breaks,则调色板将应用于输入数据的范围。如果设置breaks,则调色板将映射到您想要的整个范围和分配给组的数据,从而映射由断点定义的颜色。

如果不是fields:::image.plot()

,我没有提供示例

答案 1 :(得分:2)

我使用了这个解决方案:

col = colorRampPalette(c("darkmagenta","blue","green","yellow","orange","red"),
                       space="Lab")(NBR.COLORS) 
breaks = c(seq(-35, 10, length.out=NBR.COLORS/2), 10, 
           seq(10, 35, length.out=NBR.COLORS/2))
image.plot(akima.smooth, col=col, breaks=breaks, main=main_title,
           horizontal=TRUE,axes=TRUE);