我正在使用网格包绘制R中的一些表面。我找不到选择表面颜色的方法。这是一个例子:
以下是我如何绘制每个的示例:
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水平来着色。我试过很多东西,但是线框总是接受我给出的颜色作为当前变量的可能范围。
无论如何这可以做到吗? 感谢
答案 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
包来获取与数据相关的网格颜色。