【问题标题】:Using color as the 3rd dimension使用颜色作为第三维
【发布时间】:2011-11-24 02:15:51
【问题描述】:

我想要绘制 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 中做到这一点。任何建议的包?请使用具体的例子。谢谢!

【问题讨论】:

  • 你的数据真的是三个向量吗?因为如果您真正阅读filled.contour 的文档,您会很快看到该函数需要两个向量和一个矩阵。
  • 我确实阅读了文档,我看到它说必须订购这些值。矩阵是干什么用的?你能给我一个例子吗。我在任何地方都找不到一个很好的例子

标签: r colors 3d plot


【解决方案1】:
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

另一种选择是使用 package:akima 对不规则(非)网格进行插值:

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()

【讨论】:

  • 一个附属问题:我怎样才能在你的答案中获得与第二个情节相似的(连续)图例,但对于第一个情节?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-10
  • 1970-01-01
  • 2012-01-02
  • 1970-01-01
  • 2016-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多