代码之家  ›  专栏  ›  技术社区  ›  Lyndz

r或python中的半圆形色轮[闭合]

  •  0
  • Lyndz  · 技术社区  · 8 年前

    我想创建一个半圆形调色板。 我只知道如何使用r中的以下命令制作色轮:

    pie(rep(1,n), col=rainbow(n))
    

    这个创造了一个完整的圆。

    所需的输出如下:

    Desired output

    饱和度由内圆变为外圆。

    关于如何在r或python中实现这一点有什么建议吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   dpel Henrico    8 年前

    好吧,这很老套,但是像这样用r呢?

    Semi-circular color wheel , 获取色阶

    ramp <- colorRamp(c("blue", "white"))
    blue <- rgb( ramp(seq(0, 1, length = 5)), max = 255)
    
    ramp <- colorRamp(c("blueviolet", "white"))
    blueviolet <- rgb( ramp(seq(0, 1, length = 5)), max = 255)
    
    ramp <- colorRamp(c("violet", "white"))
    violet <- rgb( ramp(seq(0, 1, length = 5)), max = 255)
    
    ramp <- colorRamp(c("violetred", "white"))
    violetred <- rgb( ramp(seq(0, 1, length = 5)), max = 255)
    
    ramp <- colorRamp(c("red", "white"))
    red <- rgb( ramp(seq(0, 1, length = 5)), max = 255)
    
    ramp <- colorRamp(c("orangered", "white"))
    orangered <- rgb( ramp(seq(0, 1, length = 5)), max = 255)
    

    函数来绘制不同大小的饼图

    pie.fun <- function(rad,pos){
       pie(rep(1,12), border = "white", radius = rad, labels=NA,
         col=c(orangered[pos], red[pos], violetred[pos],violet[pos],blueviolet[pos],blue[pos],rep("#FFFFFF",6)))
    par(new=T)
    }
    

    绘制饼图

    pie.fun(rad=1,pos=1)
    pie.fun(rad=0.8,pos=2)
    pie.fun(rad=0.6,pos=3)
    pie.fun(rad=0.4,pos=4)
    

    画最后一个白色的

    pie(rep(1,12), border = "white", radius = 0.2, labels = NA, 
        col=c(rep("#FFFFFF",12)))
    

    添加带标签的箭头

    arrows(0.2, -0.1, 1, -0.1, xpd = TRUE, lwd=2)
    text(0.6, -0.35, "Increasing \nsaturation", cex = 1.6)
    

    添加一些彩色标签

    text(-1.2, 0.35, "Blue", cex = 1.6, col="blue")
    text(-1.2, 0.75, "Blue Violet", cex = 1.6, col="blueviolet")
    text(-0.6, 1, "Violet", cex = 1.6, col="violet")
    text(0.75, 1, "Red Violet", cex = 1.6, col="violetred")
    text(1, 0.75, "Red", cex = 1.6, col="red")
    text(1.5, 0.2, "Red Orange", cex = 1.6, col="orangered")