手动定义线框的颜色

时间:2013-05-23 15:37:30

标签: r lattice

我正在使用网格包绘制R中的一些表面。我找不到选择表面颜色的方法。这是一个例子:

enter image description here

以下是我如何绘制每个的示例:

theseCol=heat.colors(150)
mm=paste("WB numbers where present\n(",nstoch," sims)",sep="")
WBnumbers=wbPrev_series
rownames(WBnumbers)=KList
colnames(WBnumbers)=iMwbList
wireframe(WBnumbers, zlim=c(0,max(wbPrev_series,na.rm=TRUE)), colorkey=FALSE, 
                    col.regions=theseCol, scales = list(arrows = FALSE), drape = TRUE, 
                    main=mm,  zlab="", xlab="K", ylab="iMwb")

我希望第一个表面保持原样,但是对于其他表面而言,不是通过它们的z水平而是通过第一个表面的z水平来着色。我试过很多东西,但是线框总是接受我给出的颜色作为当前变量的可能范围。

无论如何这可以做到吗? 感谢

1 个答案:

答案 0 :(得分:2)

这是Dave W.几年前在R-help邮件列表上发布的答案。你可能可以谷歌整个帖子。

来自:David Winsemius 按照帮助(wirefrane)的建议,你需要看看 建议的levelplot部分:colorkey的正确规范
并按照帮助页面中的相应链接进行操作。是否您的数据
线框的正确输入无法从包含的中确定 信息,虽然我认为你报告的成功表明它是。

这是一个未经测试的(因为没有什么可测试的)狂野的猜测 在阅读了我指出的材料后:

wireframe(data.m,aspect = c(0.3), shade=TRUE, screen = list(z = 0, x =  
-45),
    light.source = c(0,0,10), distance =  
0.2,zlab="Freq",xlab="base",ylab="Fragment",
    col=level.colors(x, at = do.breaks(range(data.m), 30),
                     col.regions = colorRampPalette(c("red", "white",  
"blue")(30))
       )

编辑: 按照约什的要求,我玩了一下。以下将应用颜色着色(悬垂):

wireframe(dmat,drape=TRUE,col='black',col.regions = colorRampPalette(c("red", "white",  "blue"))(30) )

设置“悬垂”颜色,但不设置网格线本身。 wireframe不尊重par(new=TRUE)是一种耻辱,因为如果确实如此,我们可以将数据矩阵切割成z范围并一次打印一种颜色。

当我回到家时,我将不得不检查带有R图形的旧实验的“存档”,但我认为我最终使用scatterplot3d包来获取与数据相关的网格颜色。