栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > R语言

R语言基础图形元素——颜色

R语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

R语言基础图形元素——颜色


R语言基础图形元素--颜色
      • 简介
      • R中关于颜色的基础函数
        • 1. 固定颜色选择函数
          • 1.1 `colors()`函数
          • 1.2 `palette()`函数
        • 2. 颜色生成和转换函数
          • 2.1 `rgb()`函数
          • 2.2 `hsv()`函数
          • 2.3 `gray(), grey()`函数
          • 2.4 `rgb2hsv()`函数
          • 2.5 `col2rgb()`函数
        • 3. 特定颜色主题调色板
          • 3.1 `rainbow()`函数
          • 3.2 `heat.colors()`函数
          • 3.3 `terrain.colors()`函数
        • 4. 渐变色的简单原理及应用
      • 参考书籍


简介

任何一幅统计图形都是由基础的图形元素组成的,包括了颜色,点,线,以及多边形等。每一幅精美的图形都不离不开这些基础的图形元素。R语言提供了诸多函数,为图形添加点,线,颜色等。这里主要对R语言中基础的颜色选择函数进行介绍。

R中关于颜色的基础函数

在默认情况下,grDevices 包为R语言的颜色设置提供了支撑,它提供了大量的颜色选择函数和生成函数,用以实现不同的配色方案。参考谢益辉《现代统计图形》,将grDevices 包中的所有关于颜色的函数分为三类,分别是:固定颜色选择函数、颜色生成和转换函数、特定颜色主题调色板。

1. 固定颜色选择函数

顾名思义,固定颜色选择函数也就是R中自带的固定种类颜色,主要是colors()和palette()函数。

1.1 colors()函数

colors() 、colours()是一样的。
运行这两个函数,将会产生657种颜色名称,如yellow(黄色),beige(米色)等。

colors()

# sample()随机抽样函数
sample(colors(), 10)
# [1] "grey92"        "lightskyblue"  "lemonchiffon4" "coral1"       
# [5] "peachpuff3"    "darkorchid4"   "grey11"        "gray43"       
#[9] "gray87"        "salmon3"
# 通过以下函数,可以观看657种颜色,并生成PDF文件
pdf("colors.pdf", height = 120)
par(mar = c(0, 10, 3, 0) + 0.1, yaxs = "i")
barplot(rep(1, length(colors())),
  col = rev(colors()), names.arg = rev(colors()), horiz = TRUE,
  las = 1, xaxt = "n", main = expression("Bars of colors in" ~ italic(colors()))
)
dev.off()

1.2 palette()函数

palette就是调色板的意思,这么说也就很容易理解了,这个函数用来设置调色板或者获得调色板颜色值,如果不加任何参数,则返回默认值。

palette() # 默认的调色板颜色
# [1] "black"   "red"     "green3"  "blue"    "cyan"    "magenta" "yellow" 
# [8] "gray"
palette(colors()[1:20]) # 重新设置调色板为 colors() 的前 20种颜色
palette() # 更改后的调色板颜色
# [1] "white"         "aliceblue"     "antiquewhite"  "antiquewhite1"
# [5] "antiquewhite2" "antiquewhite3" "antiquewhite4" "aquamarine"   
# [9] "aquamarine"    "aquamarine2"   "aquamarine3"   "aquamarine4"  
# [13] "azure"         "azure"         "azure2"        "azure3"       
# [17] "azure4"        "beige"         "bisque"        "bisque"

palette("default") # 恢复默认调色板

此外,我们可以通过整数来调用某种颜色,例如,col=2代表colors()函数中的第二个元素。若整数值超过了调色板颜色向量的长度,那么 R 会自动取该整数除以调色板颜色向量长度的余数。

2. 颜色生成和转换函数

R 提供了一系列利用颜色生成模型如 RGB 模型(红绿蓝三原色混合)、HSV 色彩模型(色调、饱和度和纯度)、HCL 色彩模型(色调、色度和亮度)等。

2.1 rgb()函数

红绿蓝三原色混合,用法为 rgb(red, green, blue, alpha, names = NULL, maxColorValue = 1);其中前四个参数都取值于区间 [0, maxColorValue],names 参数用来指定生成颜色向量的名称。alpha参数用来指定颜色透明度,0代表完全透明,1代表完全不透明。例如,可以通过此参数设定散点图的相关颜色,使展示的内容更加完全。

rgb(0, 1, 0)
# [1] "#00FF00"

可以看出,颜色是由六个十六进制的数字组成。

2.2 hsv()函数

用色调(Hue)、饱和度(Saturation)和纯度(Value)来构造颜色,用法 hsv(h = 1, s = 1, v = 1, alpha),取值为[0,1]。

hsv(.5,.5,.5)
# [1] "#408080"
2.3 gray(), grey()函数

生成灰色系列;只有一个参数 level,表示灰度水平,取值在 0 到 1 之间,其中 0 表示纯黑色,而 1 表示纯白色;level 取一个向量则可以生成一系列灰色值。

gray(seq(0, 1, length = 5))
# [1] "#000000" "#404040" "#808080" "#BFBFBF" "#FFFFFF"

图片仅为展示颜色搭配方案。

2.4 rgb2hsv()函数

将 RGB 颜色转换为 HSV 颜色,用法 rgb2hsv(r, g = NULL, b = NULL, maxColorValue = 255)。请看以下例子:

# 赋值给变量 rgb.mat
(rgb.mat <- matrix(c(255, 0, 0, 0, 255, 0, 0, 0, 255, 10, 100, 200), nrow = 3))
#      [,1] [,2] [,3] [,4]
# [1,]  255    0    0   10
# [2,]    0  255    0  100
# [3,]    0    0  255  200
rgb2hsv(rgb.mat)
#   [,1]      [,2]      [,3]      [,4]
# h    0 0.3333333 0.6666667 0.5877193
# s    1 1.0000000 1.0000000 0.9500000
# v    1 1.0000000 1.0000000 0.7843137
2.5 col2rgb()函数

将任意一种 R 颜色值转换为 RGB 表示,用法 col2rgb(col, alpha = FALSE)。

col2rgb(4) # 调色板中第 4 种颜色默认是蓝色
#       [,1]
# red     19
# green  165
# blue   253
col2rgb("yellow") # 黄色是由红绿混合得到的
#       [,1]
# red    255
# green  255
# blue     0
3. 特定颜色主题调色板

个人认为,前面的颜色方案可能不适合于非专业人士的使用(仅为个人看法),这一部分主要介绍几个特定的颜色主题调色板。

3.1 rainbow()函数

就是用彩虹的颜色(“红橙黄绿青蓝紫”)来产生一系列颜色,用法 rainbow(n, s = 1, v = 1, start = 0, end = max(1, n - 1)/n);参数 n 设定产生颜色的数目;参数 start 和 end 设定彩虹颜色的一个子集,生成的颜色将从这个子集中选取。

par(mfrow = c(2, 2))
pie(rep(1, 12), col = rainbow(12), main = "RGB/HSV")

3.2 heat.colors()函数

从红色渐变到黄色再变到白色。

3.3 terrain.colors()函数

从绿色渐变到黄色再到棕色最后到白色。

此外,还有诸多特定颜色主题调色板相关函数有待探索。

这里再介绍一个附加包RColorBrewer,可以用包中的brewer.pal()函数生成颜色。

library(RColorBrewer)
brewer.pal(9, "Blues")
# [1] "#F7FBFF" "#DEEBF7" "#C6DBEF" "#9ECAE1" "#6BAED6" "#4292C6" "#2171B5"
# [8] "#08519C" "#08306B"
# 查看RColorBrewer包所有配色方案
display.brewer.all(type="all") 

4. 渐变色的简单原理及应用
xx <- c(1912, 1912:1971, 1971)
yy <- c(min(nhtemp), nhtemp, min(nhtemp))
plot(xx, yy, type = "n", xlab = "Year", ylab = "Temperatures")
for (i in seq(255, 0, -3)) {
  yy <- c(45, nhtemp - (nhtemp - min(nhtemp)) * (1 - i / 255), 45) # rgb() 中的绿色成分逐渐变小
  polygon(xx, yy, col = rgb(1, i / 255, 0), border = NA)
  # 可以在这里加上 Sys.sleep(0.05) 以便看清作图过程
}
box() # 补齐边框

此图展示的是1912~1971年New Haven 地区的年均气温。

最后,漂亮、适宜的统计图形总是受人欢迎的,颜色搭配对于绘图的重要性不言而喻。


  • ##侵权请联系作者删除!
参考书籍

[1] 现代统计图形

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/855673.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号