简体   繁体   English

可视化 R 中的颜色/调色板列表

[英]visualize a list of colors/palette in R

I have following data.frame with rgb values.我有以下带有 rgb 值的 data.frame。 Hence each row indicates a color.因此,每一行表示一种颜色。

> ddf
       r     g     b
1  0.374 0.183 0.528
2  0.374 0.905 0.337
3  0.051 0.662 0.028
4  0.096 0.706 0.898
5  0.876 0.461 0.628
6  0.415 0.845 0.286
7  0.596 0.070 0.523
8  0.724 0.101 0.673
9  0.847 0.434 0.937
10 0.588 0.885 0.604
11 0.481 0.366 0.337
12 0.142 0.075 0.276
13 0.819 0.737 0.658
14 0.910 0.722 0.979
15 0.969 0.012 0.451
16 0.887 0.536 0.123
17 0.432 0.967 0.446
18 0.927 0.125 0.332
19 0.381 0.646 0.656
20 0.040 0.898 0.798
> 
> dput(ddf)
structure(list(r = c(0.374, 0.374, 0.051, 0.096, 0.876, 0.415, 
0.596, 0.724, 0.847, 0.588, 0.481, 0.142, 0.819, 0.91, 0.969, 
0.887, 0.432, 0.927, 0.381, 0.04), g = c(0.183, 0.905, 0.662, 
0.706, 0.461, 0.845, 0.07, 0.101, 0.434, 0.885, 0.366, 0.075, 
0.737, 0.722, 0.012, 0.536, 0.967, 0.125, 0.646, 0.898), b = c(0.528, 
0.337, 0.028, 0.898, 0.628, 0.286, 0.523, 0.673, 0.937, 0.604, 
0.337, 0.276, 0.658, 0.979, 0.451, 0.123, 0.446, 0.332, 0.656, 
0.798)), .Names = c("r", "g", "b"), class = "data.frame", row.names = c(NA, 
-20L))

How can I visualize these colors?我如何可视化这些颜色? This can be either as bars of color or a palette or a pie chart.这可以是颜色条,也可以是调色板或饼图。 I tried to use following method but could not fit it in my data:我尝试使用以下方法,但无法将其放入我的数据中:

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

I think the simplest option is scales.我认为最简单的选择是秤。 This also has the advantage of showing the hex values in the colours.这也具有在颜色中显示十六进制值的优点。

library(scales)
pal <- rgb(ddf$r, ddf$g, ddf$b)
show_col(pal)

在此处输入图片说明

image() will work well here if you convert the colors via rgb()如果您通过rgb()转换颜色,则image()在这里可以很好地工作

image(1:nrow(ddf), 1, as.matrix(1:nrow(ddf)), 
      col=rgb(ddf$r, ddf$g, ddf$b),
      xlab="", ylab = "", xaxt = "n", yaxt = "n", bty = "n")

在此处输入图片说明

As an alternative to the solution using image you could also use polygon and create a quite similar plot:作为使用image的解决方案的替代方案,您还可以使用polygon并创建一个非常相似的图:

plot(NA, xlim=c(0, nrow(ddf)), ylim=c(0,1))

for (i in 1:nrow(ddf)) {

  row <- ddf[i,]
  color <- rgb(red=row$r, green=row$g, blue=row$b)
  polygon(x=c(i-1, i, i, i-1), y=c(0, 0, 1, 1), col = color)
}

You could also use ggplot2 :你也可以使用ggplot2

library(ggplot2)
qplot(x=1:nrow(ddf), y = 1, fill=factor(1:nrow(ddf)), geom="tile") +
  scale_fill_manual(values = rgb(ddf$r, ddf$g, ddf$b)) +
  theme_void()+
  theme(legend.position="none") 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM