plot(x,y,col =)在R中工作错误?

dok*_*ker 4 plot r

我有一个问题,理解情节中的col参数是如何工作的.

我们先来看看这个:

plot(collection[,"x"], collection[,"y"], 
     col=rainbow(21300)[order(collection[,"y"])],pch=".")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

颜色几乎与y轴对齐,但是并非完全对齐.

现在让我们这样做:

plot(collection[,"x"], collection[,"y"],
    col=rainbow(21300)[order(collection[,"x"])],pch=".")
Run Code Online (Sandbox Code Playgroud)

我希望颜色从左到右渐变,因为我在与表示x轴的数据相同的数据上对它们进行了排序.

但不,这是一个完整的混乱.

那么它是怎样工作的?

在此输入图像描述

MrF*_*ick 7

也许您的数据已经开始按y值(或接近的值)排序.该col=参数为您按照点出现的顺序绘制的每个点指定颜色.当您这样做时,order()您将返回属于每个位置的元素的索引.如果您的数据已经排序,这与当前位置不同.但如果不是,那就是你如何重新排序它.这不是值本身所处的序列.order()您可能应该使用它而不是这样做rank().这给出了每个元素的就地顺序.

这是一些示例数据

y<-cumsum(runif(1000, -.5, 1))
x<-sin(seq(1:length(y))/7+rnorm(length(y),.5,.1))
Run Code Online (Sandbox Code Playgroud)

你会看到的

plot(x,y, col=rainbow(length(y))[order(y)], main="order y")
plot(x,y, col=rainbow(length(y))[order(x)], main="order x")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

y的顺序看起来不错,因为数据基本上是以y开头的顺序.x看起来很疯狂,因为当您按x排序颜色时,您不是按x自己排序x值.你可以做到

plot(x,y, col=rainbow(length(y))[rank(y)], main="rank y")
plot(x,y, col=rainbow(length(y))[rank(x)], main="rank x")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

得到更像你期待的情节.或者,您也可以订购数据

plot(x[order(y)],y[order(y)], col=rainbow(length(y)), main="data y")
plot(x[order(x)],y[order(x)], col=rainbow(length(y)), main="data x")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述