【转】R语言笔记--颜色的使用
转自该网站:http://research.stowers-institute.org/efg/R/Color/Chart/
科学可视化中常用的一些颜色表:http://geog.uoregon.edu/datagraphics/color_scales.htm
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 <- 27plot( 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 ColorChart.R code for complete details. Here is the first page of the Chart of R colors.
PDF of 7-page "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://research.stowers-institute.org/efg/R/Color/Chart/ColorChart.R")
【转】R语言笔记--颜色的使用的更多相关文章
- R语言笔记
R语言笔记 学习R语言对我来说有好几个地方需要注意的,我觉得这样的经验也适用于学习其他的新的语言. 语言的目标 我理解语言的目标就是这个语言是用来做什么的,为什么样的任务服务的,也就是设计这个语言的动 ...
- R语言笔记4--可视化
接R语言笔记3--实例1 R语言中的可视化函数分为两大类,探索性可视化(陌生数据集,不了解,需要探索里面的信息:偏重于快速,方便的工具)和解释性可视化(完全了解数据集,里面的故事需要讲解别人:偏重全面 ...
- R语言笔记完整版
[R笔记]R语言函数总结 R语言与数据挖掘:公式:数据:方法 R语言特征 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母).不过,一个命名必须以 . 或者字母开头, ...
- R语言笔记:快速入门
1.简单会话 > x<-c(1,2,4) > x [1] 1 2 4 R语言的标准赋值运算符是<-.也可以用=,不过不建议用它,有些情况会失灵.其中c表示连接(concaten ...
- 初探R语言——R语言笔记
R语言使用 <- 赋值 # 作为注释符号 c()函数用于作为向量赋值,例如age<-c(1,2,3,4,5) mean()用于求向量的平均值 sd()求向量的标准差 cor(a,b)求a ...
- R语言笔记5--读数据
1.读文本文件数据 (1)先设置工作目录,把文本文件放于该目录下 备注:在记事本里写完数据后,按一下回车,负责在R语言中出现错误 (2)读剪贴板 文本或EXCEL的数据均可通过剪贴板操作 (3)读ex ...
- R语言笔记1--向量、数组、矩阵、数据框、列表
注释:R语言是区分大小写的 1.向量 R语言中可以将各种向量赋值为一个变量,这种赋值操作符就是等号“=”,也可以使用“<-”. 1)产生向量 (1)函数c() 例如:x1=c(2,4,6,8,0 ...
- R语言笔记2--循环、R脚本
1.循环语句 for语句 while语句 2.R脚本 source()函数 print()函数
- r语言笔记 jn
get_range <- function(data_name , row_name){ library(stringr) load(data_name) data_str <- str_ ...
随机推荐
- HIS系统的处方录入控件
前文<EFW框架Winform前端开发之强大的自定义控件库>中我们介绍了EFW框架中Winform系统中的自定义控件,本章使用自定义控件中的GridBoxCard控件开发了一个HIS系统的 ...
- CGAL4.4+VC2008编译
一: CGAL是欧盟资助的基础几何库,很底层, 纯算法, 对于你的项目和科研都是不可多得的好东西, 废话一句, 国内做这样的东西, 估计会活不下去交不了差的. 不多介绍.送上 英文原址, 从软件角度, ...
- Legolas工业自动化平台入门(二)数据响应动作
在上一篇文章Legolas工业自动化平台入门(一)搭建应用里,我们简单地提到了"动作"的概念.不清楚的童鞋不要着急,这篇我们就来介绍如何在Legolas平台上添加动作,并应用动作. ...
- NTKO Officecontrol在线Word编辑器的使用
1.何时进行手工卸载和安装 一般情况下应该让客户端自动控件,这样当服务器控件版本更新时,客户端可以获得自动升级方面的好处.但是,如果因为客户机配置有问题,或者有其它拦截工具拦截的原因无法自动安装控件, ...
- 破解android手机图形锁
安卓手机的图形锁包括3*3,4*4,5*5的点阵,按次序连接数个点从而达到锁定/解锁的功能.以3*3为例,最少需要连接4个点,最多能连接9个点.在我们进行绘制图形的过程中,每选中这9个点中的一个点,实 ...
- linux2.6.24内核源代码分析(1)——扒一扒sk_buff
最近研究了linux内核的网络子系统上的网络分组的接收与发送的流程,发现这个叫sk_buff的东西无处不在,内核利用了这个结构来管理分组,在各个层中传递这个结构,因此sk_buff可以说是linux内 ...
- 游戏开发工具之纹理打包器-3.使用GDI+绘图
上一次我们实现了把我们要的图片添加到CTreeCtrl控件里去,并显示图片的缩略图,现在开始我们要讲比较重要的部分--绘图区.为了实现能编辑图片的功能,绘图区应该具有如下功能. 1. 添加删除图片. ...
- CentOS 6.4 快速安装Nginx笔记
CentOS 6.4 快速安装Nginx笔记 本系列文章由ex_net(张建波)编写,转载请注明出处. http://blog.csdn.net/ex_net/article/details/9860 ...
- Python单元测试框架之pytest -- 生成测试报告
继续pytest单元测试框架的学习,pytest可以生成多种类型的测试报告.这一节就来学习pytest如何生成测试报告. 创建test_calss.py 测试用例文件,这里以测试该文件为例. #cod ...
- How can I learn to program?
黑客与画家:硅谷创业之父paul graham关于回答‘How can I learn to program’ How can I learn to program? Find a friend wh ...