如何将RGB值向量转换为十六进制

时间:2018-12-29 22:34:57

标签: r ggplot2 rgb

我有一个RGB值的CSV,即:

<img scr="mypic.png"
alt="example">

我想将它们应用于ggplot2栅格中的离散比例,该栅格正在寻找与RGB相反的十六进制代码

[1]230-000-070
[2]255-000-000
[3]204-077-242
...
...
(40 more rows)

我认为我需要此功能-如何将其应用于向量?

scale_colour_manual(values = c("#E60046", "#FF0000", "#CC4DF2"))

3 个答案:

答案 0 :(得分:2)

您可以使用strsplit函数用RGB值分割原始矢量,然后使用rgb2hexdo.call应用于strsplit产生的列表(输出是列表)。 / p>

# Input vector
RGB <- c("230-000-070", "255-000-000", "204-077-242")
# Function to apply
rgb2hex <- function(r, g, b) {rgb(r, g, b, maxColorValue = 255)}
# Split orignal vector and pass to rgb2hex with do.call as list
do.call(rgb2hex, strsplit(RGB, "-"))

答案 1 :(得分:0)

您也可以这样做:

rgb2hex <- function(x) rgb(substr(x, 1, 3), substr(x, 5, 7), substr(x, 9, 11), maxColorValue = 255)

输出:

rgb2hex(rgb)

[1] "#E60046" "#FF0000" "#CC4DF2"

答案 2 :(得分:0)

在初次阅读csv时,最好通过将CREATE TRIGGER thequery4 ON employees INSTEAD OF INSERT, DELETE AS BEGIN IF EXISTS ( SELECT 1 FROM inserted i WHERE NOT EXISTS ( SELECT 1 FROM DEPARTMENTS dp WHERE i.D_ID = dp.D_ID)) BEGIN PRINT 'you are NOT allowed , B/C IS Its d_Id is not present in department ' END ELSE BEGIN ---- insert ---- END END 指定为分隔符,将r,g,b值拆分为单独的列。尽管可以同样使用read.csv来代替,但此处使用-进行了演示:

library(data.table)

NB要对示例数据进行测试,可以使用:

x = fread('my.csv', sep='-')
x[, rgb(V1,V2,V3, maxColorValue = 255)]