I have following list of colors:
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))
>
> 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
>
How can I use it in the same manner as following command for rainbow() color palette:
barplot(rep(1,100), yaxt='n',col=rainbow(100))
Following works:
barplot(rep(1,100), yaxt='n',col=with(ddf, rgb(r,g,b)))
However, here color sequence is repeating (5 times) rather than palette getting stretched from one end to another.
In this case, the colorRampPalette()
function is your friend. First, let's define
mycols<-with(df, rgb(r,g,b))
Now we start, without repeating
barplot(rep(1,20), yaxt='n',col=mycols)
now, with repeating
barplot(rep(1,100), yaxt='n',col=mycols)
now, with interpolation from colorRampPalette
barplot(rep(1,100), yaxt='n',col=colorRampPalette(mycols)(100))