【问题标题】:R convert colors to pastel colorsR 将颜色转换为柔和的颜色
【发布时间】:2018-11-09 01:22:55
【问题描述】:

我有一个手动设计的调色板 pal 用于使用ggplot2 进行绘图

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

我想将这些颜色转换为柔和的颜色(即 HSV 颜色空间中的高值和低饱和度)

有什么简单的方法可以自动完成吗?

我从RPMG 包中找到了pastel.colors,但是,此函数不会转换给定的颜色。

【问题讨论】:

  • 执行?rgb2hsv - grDevices 包 - 并查看此功能的示例。
  • @captcoma,试试library(colorspace)。请参阅此cheatsheet 以及vignette 了解详情
  • 可以更容易直接使用内部柔和调色板,例如RColorBrewer::display.brewer.pal(8, "Pastel1")
  • 很好的输入!我尝试了色彩空间,但是,我只选择了预设颜色方案,与 RColorBrewer 相同的问题,Pastel1 给了我 9 种预设颜色。我需要我提到的 13 种颜色作为相同顺序的粉彩。手动添加粉彩可能是最好的吗?
  • colorspace的开发版有一个函数lighten,你可以用它把你所有的颜色淡化一定量

标签: r ggplot2 colors


【解决方案1】:

由于我不是色彩专家,您可以尝试以下作为起点。这个想法是基于我在某处发现的一个陈述,即柔和的颜色 1)在 HSV 颜色空间中具有高值和低到中等饱和度,或者 2)需要一些亮度值。因此,我将颜色的名称转换为通过col2rgbrgb2hsvhcl 输入的色调。

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

【讨论】:

    猜你喜欢
    • 2019-11-14
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 2012-07-07
    • 2022-11-25
    • 1970-01-01
    相关资源
    最近更新 更多