我正在试着做一个温度图,所有的工作都很好,但我不知道如何有一个固定的调色板。
实际上我有这个:
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,我想要“黄色”。
发布于 2012-05-04 14:48:54
我使用了这个解决方案:
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-04 04:29:03
如果这是fields:::image.plot(),请参见?image函数的参数。特别是,需要使用breaks参数来设置分割点边界的值,这些分割点用于将输入数据分成用于绘图的类。
您看到的问题是,如果您不设置breaks,那么调色板将应用于输入数据的范围。如果设置为breaks,则调色板将映射到所需的整个范围,并将数据分配给组,从而由断点定义颜色。
我没有包含一个示例,以防这不是fields:::image.plot()
https://stackoverflow.com/questions/10436091
复制相似问题