2011-09-24 30 views
3

我有3个要绘制的维度,我希望第三维是彩色的。使用颜色作为第三维

这将在R中。例如,我的数据是这样的

x = [1,2,3,4,1,5,6,3,4,7,8,9] 
y = [45,32,67,32,32,47,89,91,10,12,43,27] 
z = [1,2,3,4,5,6,7,8,9,10,11,12] 

我想使用filled.contour,但它给我一个错误说x和y必须是递增的顺序。但我并不确定如何安排我的数据,以确保这一点。因为如果我按递增顺序排列x,那么y将不会按递增顺序排列。

对于我来说做一个没有填充的轮廓方法也是可行的,它只是数据点被着色。我如何在R中做到这一点。任何建议的软件包?请使用具体的例子。谢谢!

+0

您的数据真的是三个向量吗?因为如果你真的阅读'filled.contour'的文档,你会很快看到该函数需要两个向量和一个矩阵。 – joran

+0

我确实阅读过文档,发现它说的是必须订购的值。什么是矩阵?你可以给我一个例子吗。我找不到一个很好的例子 – CodeGuy

回答

5
jet.colors <- 
    colorRampPalette(c("#00007F", "blue", "#007FFF", "cyan", 
         "#7FFF7F", "yellow", "#FF7F00", "red", "#7F0000")) 
plot(x,y, col=jet.colors(12)[z], ylim=c(0,100), pch=20, cex=2) 
legend(8.5,90, col = jet.colors(12)[z], legend=z, pch=15) 

如果你要检查的着色你可以用Z值标记点:

text(x, y+2, labels=z) #offset vertically to see the colors 

enter image description here

另一种选择是使用包装:阿克玛这确实不规则插值(non)-grids:

require(akima) 
require(lattice) 
ak.interp <- interp(x,y,z) 
pdf(file="out.pdf") 
levelplot(ak.interp$z, main="Output of akima plotted with lattice::levelplot", contour=TRUE) 
dev.off() 

enter image description here

+0

但我想要一个轮廓 – CodeGuy

+0

好的。查看编辑。 –

+0

附属问题:如何获得类似于答案中第二个图的(连续的)图例,但是对于第一个图? – Mortimer

相关问题