将颜色转换为粉彩色的R代码

4

我有一个手动设计的颜色调色板pal,我使用它来制作一个使用ggplot2的图形。

 pal <- c("red","red1","red2","red3","grey","darkgreen","skyblue","blue","magenta","magenta4","yellow","orange","pink","pink","black")

我希望将这些颜色转换为粉彩色(在HSV颜色空间中表示高值和低饱和度的颜色)。

有没有一种简单的方法可以自动完成这个过程?

我找到了RPMG包中的pastel.colors函数,但是该函数无法转换给定的颜色。


1
使用?rgb2hsv命令,查看grDevices包中此函数的示例。 - patL
2
@captcoma,请尝试使用library(colorspace)。请参考此速查表以及此vignette获取详细信息。 - mnm
可以直接使用内部的柔和调色板,例如 RColorBrewer::display.brewer.pal(8, "Pastel1") 更容易。 - Roman
好的输入!我尝试了colorspace,但是我只能选择预设的颜色方案,使用RColorBrewer也有同样的问题,Pastel1只给了我9种预设颜色。我需要的是我在相同顺序中提到的13种pastel颜色。最好的方法可能是手动添加这些pastel颜色吗? - captcoma
1
colorspace 的开发版本有一个名为 lighten 的函数,您可以使用它来将所有颜色变亮一定程度。 - camille
1个回答

6

由于我不是色彩专家,您可以尝试以下建议作为起点。这个想法基于我在某个地方找到的一个声明,过去的颜色1)在HSV颜色空间中具有高值和低到中等饱和度;或者2)需要一些亮度价值。因此,我将颜色名称转换为色调,这些色调是通过col2rgb & rgb2hsv输入到hcl中的。

a <-c("red","red1","red2","red3","grey","darkgreen","skyblue","blue","magenta","magenta4","yellow","orange","pink","pink","black")
par(mfrow=c(3,1))
barplot(seq_along(a), col=a, main="original")
# transform to rgb
a1 <- col2rgb(a)
# transform to HSV space
a2 <- rgb2hsv(a1)
# you can try different scaling values e.g. between 0.3 - 0.6
n <- 0.4
barplot(seq_along(a), col=hsv(a2[1,], a2[2,]*n, a2[3,]), main="Pastel_hsv")
# calculate hue for HCl
hue <- a2["h",]*360
# create color with suitable chroma and luminance to get pastel color
a3 <- hcl(hue, 35, 85)
barplot(seq_along(a), col=a3, main="Pastel_hcl")

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接