博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】R语言笔记--颜色的使用
阅读量:6414 次
发布时间:2019-06-23

本文共 6502 字,大约阅读时间需要 21 分钟。

转自该网站:

科学可视化中常用的一些颜色表:

 

Step-by-Step Procedure (to learn about "colors")

1.  The function call, colors(), or with the British spelling, colours(), returns a vector of  657 color names in R.  The color names are in alphabetical order, except forcolors()[1], which is "white".  The names "gray" and "grey" can be spelled either way -- many shades of grey/gray are provided with both spellings.

 

2.  Particular color names of interest can be found if their positions in the vector are known, e.g.,

> colors()[c(552,254,26)]

[1] "red" "green" "blue"

3.  grep can be used to find color names of interest, e.g.,

> grep("red",colors())

[1] 100 372 373 374 375 376 476 503 504 505 506 507 524 525 526 527 528 552 553
[20] 554 555 556 641 642 643 644 645

> colors()[grep("red",colors())]
[1] "darkred" "indianred" "indianred1" "indianred2" 
[5] "indianred3" "indianred4" "mediumvioletred" "orangered" 
[9] "orangered1" "orangered2" "orangered3" "orangered4" 
[13] "palevioletred" "palevioletred1" "palevioletred2" "palevioletred3" 
[17] "palevioletred4" "red" "red1" "red2" 
[21] "red3" "red4" "violetred" "violetred1" 
[25] "violetred2" "violetred3" "violetred4"

 

> colors()[grep("sky",colors())]

[1] "deepskyblue" "deepskyblue1" "deepskyblue2" "deepskyblue3" 
[5] "deepskyblue4" "lightskyblue" "lightskyblue1" "lightskyblue2"
[9] "lightskyblue3" "lightskyblue4" "skyblue" "skyblue1" 
[13] "skyblue2" "skyblue3" "skyblue4"

 

 

4.  The function col2rgb can be used to extract the RGB (red-green-blue) components of a color, e.g.,

> col2rgb("yellow")

[,1]
red 255
green 255
blue 0

Each of the three RGB color components ranges from 0 to 255, which is interpreted to be 0.0 to 1.0 in RGB colorspace.  With each of the RGB components having 256 possible discrete values, this results in 256*256*256 possible colors, or 16,777,216 colors.

 

While the RGB component values range from 0 to 255 in decimal, they range from hex 00 to hex FF.  Black, which is RGB = (0,0,0) can be represented in hex as #000000, and white, which is RGB = (255,255,255), can represented in hex as #FFFFFF.

 

5.  R provides a way to define an RGB triple with each of the color components ranging from 0.0 to 1.0 using the rgb function.  For example, yellow can be defined:

> rgb(1.0, 1.0, 0.0)

[1] "#FFFF00"

The output is in hexadecimal ranging from 00 to FF (i.e., decimal 0 to 255) for each color component.  The 0.0 to 1.0 inputs are a bit odd, but are standard in RGB color theory.  Since decimal values from 0 to 255 are common, the rgb function allows a maxColorValue parameter as an alternative:

> rgb(255, 255, 0, maxColorValue=255)

[1] "#FFFF00"

The R function, GetColorHexAndDecimal, was written to display both hex and decimal values of the color components for a given color name:

 

GetColorHexAndDecimal <- function(color)

{
  c <- col2rgb(color)
  sprintf("#%02X%02X%02X %3d %3d %3d", c[1],c[2],c[3], c[1], c[2], c[3])
}

Example:

> GetColorHexAndDecimal("yellow")

[1] "#FFFF00 255 255 0"

This GetColorHexAndDecimal function will be used below in Step 9.

 

6.  Text of a certain color when viewed against certain backgrounds can be very hard to see, e.g., never use yellow text on a white background since there isn't good contrast between the two.  One simple hueristic in defining a text color for a given background color is to pick the one that is "farthest" away from "black" or "white".  One way to do this is to compute the color intensity, defined as the mean of the RGB triple, and pick "black" (intensity 0) for text color if the background intensity is greater than 127, or "white" (intensity 255) when the background intensity is less than or equal to 127.

 

The R function below, SetTextContrastColor, gives a good text color for a given background color name:

SetTextContrastColor <- function(color)

{
  ifelse( mean(col2rgb(color)) > 127, "black", "white")
}

# Define this array of text contrast colors that correponds to each

# member of the colors() array.
TextContrastColor <- unlist( lapply(colors(), SetTextContrastColor) )

Examples:

> SetTextContrastColor("white")

[1] "black"
> SetTextContrastColor("black")
[1] "white"
> SetTextContrastColor("red")
[1] "white"
> SetTextContrastColor("yellow") 
[1] "black"

7.  The following R code produces the "R Colors" graphic shown at the top of this page (using TextContrastColor defined above):

# 1a. Plot matrix of R colors, in index order, 25 per row.

# This example plots each row of rectangles one at a time.
colCount <- 25 # number per row
rowCount <- 27

plot( c(1,colCount), c(0,rowCount), type="n", ylab="", xlab="",

  axes=FALSE, ylim=c(rowCount,0))
title("R colors")

for (j in 0:(rowCount-1))

{
  base <- j*colCount
  remaining <- length(colors()) - base
  RowSize <- ifelse(remaining < colCount, remaining, colCount)
  rect((1:RowSize)-0.5,j-0.5, (1:RowSize)+0.5,j+0.5,
    border="black",
    col=colors()[base + (1:RowSize)])
  text((1:RowSize), j, paste(base + (1:RowSize)), cex=0.7,
    col=TextContrastColor[base + (1:RowSize)])
}

 

8. Alphabetical order is not necessarily a good way to find similar colors.  The RGB values of each of the colors() was converted to hue-saturation-value (HSV) and then sorted by HSV.  This approach groups colors of the same "hue" together a bit better.  Here's the code and graphic produced:

# 1b. Plot matrix of R colors, in "hue" order, 25 per row.

# This example plots each rectangle one at a time.
RGBColors <- col2rgb(colors()[1:length(colors())])
HSVColors <- rgb2hsv( RGBColors[1,], RGBColors[2,], RGBColors[3,],
             maxColorValue=255)
HueOrder <- order( HSVColors[1,], HSVColors[2,], HSVColors[3,] )

plot(0, type="n", ylab="", xlab="",

axes=FALSE, ylim=c(rowCount,0), xlim=c(1,colCount))

title("R colors -- Sorted by Hue, Saturation, Value")

for (j in 0:(rowCount-1))

{
  for (i in 1:colCount)
  {
   k <- j*colCount + i
   if (k <= length(colors()))
   {
    rect(i-0.5,j-0.5, i+0.5,j+0.5, border="black", col=colors()[ HueOrder[k] ])
    text(i,j, paste(HueOrder[k]), cex=0.7, col=TextContrastColor[ HueOrder[k] ])
   }
  }
}

 

 

9.  While the color matrices above are useful, a more useful display would include a rectangular area showing the color, the color index, the color name, and the RGB values, both in hexadecimal, which is often used in web pages.

 

The code for this is a bit tedious -- see Item #2 in the  for complete details. Here is the first page of the Chart of R colors.

 

 

 

 

10.  To create a PDF file (named ColorChart.pdf) with all the graphics shown on this page, issue this R command:

source("")

本文转自博客园博文,原文链接:http://www.cnblogs.com/speeding/p/4115532.html,如需转载请自行联系原作者

http://www.cnblogs.com/speeding/ 

你可能感兴趣的文章
yRadio以及其它
查看>>
第四节 对象和类
查看>>
闪迪(SanDisk)U盘防伪查询(官方网站)
查看>>
Android onMeasure方法介绍
查看>>
无锁数据结构
查看>>
MySQL的变量查看和设置
查看>>
android onNewIntent
查看>>
XML特殊符号
查看>>
kaptcha可配置项
查看>>
JavaMail邮箱验证用户注册
查看>>
系统时间——ntpd
查看>>
反射实现AOP动态代理模式(Spring AOP实现原理)
查看>>
Spring MVC 4.x + fastjson 1.2.7,封装的List<?>参数
查看>>
js选中问题
查看>>
protobuf
查看>>
4.Java基础复习--Set
查看>>
七:Mysql的乐观锁与悲观锁机制
查看>>
CSS滤镜及渐变 (filter样式表属性)
查看>>
调用上面的@InitBinder 解决客户端上传时间参数转换的问题
查看>>
net.sf.json.JSONException: There is a cycle in the hierarchy异常,解决方法
查看>>