5

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

其实我有这个:

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°CI,我想要“黄色”颜色。

4

2 回答 2

4

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

您看到的问题是,如果您没有设置,breaks那么调色板将应用于输入数据的范围。如果您设置breaks,那么调色板将映射到您想要的整个范围以及分配给组的数据,因此颜色由断点定义。

我没有包括一个例子,以防万一fields:::image.plot()

于 2012-05-03T20:29:02.533 回答
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);
于 2012-05-04T06:48:53.937 回答