扭曲R中的彩虹

Cod*_*Guy 2 plot r

如何在R中扭曲默认的彩虹.例如,看看这段代码及其产生的图像:

x = seq(0,50,by=0.005)
y = runif(length(x),2,5)
colors = rainbow(length(x))
plot(x,y,cex=0.2,pch=16,col=colors)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我想改变它,以便没有那么多绿色.应该有绿色和黄色,青色和蓝色一样多.我也想删除洋红色(最右边的"红色").我怎么能这样做?

the*_*ail 9

如果你明确地从调色板生成中跳过绿色,你就会接近你想要的东西:

par(mfrow=c(2,1))
par(mar=c(2,1,3,1))

x = seq(0,50,by=0.005)
y = runif(length(x),2,5)
colors = rainbow(length(x))
plot(x,y,cex=0.2,pch=16,col=colors)
title(main="old")

crp.rg <- colorRampPalette(c("red","yellow","cyan","blue","red"))
colors = crp.rg(length(x))
plot(x,y,cex=0.2,pch=16,col=colors)
title(main="new")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

编辑

您还可以手动编辑每个颜色过渡以使它们具有不同的长度:

par(mfrow=c(2,1))
par(mar=c(2,1,3,1))

x = seq(0,50,by=0.005)
y = runif(length(x),2,5)
colors = rainbow(length(x))
plot(x,y,cex=0.2,pch=16,col=colors)
title(main="old")


crp.step1 <- colorRampPalette(c("red","yellow"))
crp.step2 <- colorRampPalette(c("yellow","green"))
crp.step3 <- colorRampPalette(c("green","cyan"))
crp.step4 <- colorRampPalette(c("cyan","blue"))
crp.step5 <- colorRampPalette(c("blue","red"))

colors <-   c(
           crp.step1(2666),
           crp.step2(1000),
           crp.step3(1000),
           crp.step4(2666),
           crp.step5(2667)
        )

plot(x,y,cex=0.2,pch=16,col=colors)
title(main="new")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述