【发布时间】:2014-05-28 09:44:28
【问题描述】:
我是 R 新手,正在努力寻找我认为相对常见的问题的答案。我正在使用 fill.contour 创建一个变量的世界地图。例如:
z=matrix(rnorm(7008),nrow=96)
x=seq(-176.25,180, by=3.75)
y=seq(-90,90, by=2.5)
filled.contour(x,y,z, plot.axes={axis(1); axis(2); map(add=TRUE, interior=FALSE)} )
其中x & y 为经纬度,z 为数据矩阵。我已经花时间应用我自己的颜色和级别,但是我想要一个颜色渐变,白色分配为零。通过绿色和黄色,负数分级为深蓝色,正数分级为深红色。
我已尝试使用“plotrix”包中的 color.scale 函数
cellcol=matrix(rep("#000000",7008),nrow=96) # replicating the size of my matrix z
cellcol[z>0]=color.scale(z[z>0], c(0,1,1),c(1,1,0),0) # values above zero grading to red
cellcol[z<0]=color.scale(z[z<0], 0, 0,c(0,1)) # values below zero grading to blue
但是现在我被卡住了。这是最好的方法吗?如果是这样,我如何将其输入到上面的filled.contour 代码中?我敢肯定它很简单,但不能让它工作。
提前感谢您的帮助。
【问题讨论】:
-
你确定
color.scale不在plotrix 包中吗? -
道歉我已经编辑并试图使我的问题更可重复
-
如果您的数据是,例如在您的示例中以零为中心,您可以使用
filled.contour(x,y,z, plot.axes={axis(1); axis(2)}, color.palette=colorRampPalette(c("red","white","blue"))),但我想它们不是。 -
不,恐怕不会。感谢以下建议,我已经在 ggplot2 中完成了,但假设必须有一种方法来填充。轮廓
-
我设法用 fill.contour 做到了。