我正在尝试制作温度图,一切正常,但我不知道如何使用固定的调色板。
其实我有这个:
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我想要“黄色”颜色。
答案 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);