R语言之数据可视化学习记录4:补充内容

时间: 2018-07-31
教程: 慕课网 《R语言之数据可视化》 讲师:Angelayuan
学习内容: 课程第三章10-11


数据可视化

4. Color

R中的grDevice包中含有两个调色版:
- colorRamp()和colorRampPalette()
- 颜色名字使用colors进行获取。
R中的RColorBrewer包中含有三类调色板:
- sequential、diverging和qualitative
- 这个包内的调色版可以与grDevice包中的调色板结合使用
sequential调色板的颜色是由浅到深,逐渐过渡,为渐变色;
diverging调色板的颜色两边深,中间浅,由暖色系变为冷色系,为渐变色,适用于需要突出极端值的数据;
qualitative调色板的颜色不是渐变色,对比鲜明,适合分类数据。
如:

> pal <- colorRamp(c("red", "blue"))
> pal
function (x) 
roundcolor(cbind(palette[[1L]](x), palette[[2L]](x), palette[[3L]](x), 
    if (alpha) palette[[4L]](x))) * 255
<bytecode: 0x0000000013733ba8>
<environment: 0x0000000013732e18>
> pal(0) # red
     [,1] [,2] [,3]
[1,]  255    0    0
> pal(1) #blue
     [,1] [,2] [,3]
[1,]    0    0  255
> pal(0.5)
      [,1] [,2]  [,3]
[1,] 127.5    0 127.5
> pal(seq(0, 1, len = 10))
           [,1] [,2]      [,3]
 [1,] 255.00000    0   0.00000
 [2,] 226.66667    0  28.33333
 [3,] 198.33333    0  56.66667
 [4,] 170.00000    0  85.00000
 [5,] 141.66667    0 113.33333
 [6,] 113.33333    0 141.66667
 [7,]  85.00000    0 170.00000
 [8,]  56.66667    0 198.33333
 [9,]  28.33333    0 226.66667
[10,]   0.00000    0 255.00000
> class(pal)
[1] "function"
> class(pal(0.5))
[1] "matrix"

可以看出,colorRamp中颜色是由RGB值的形式来保存的。

> pal1 <- colorRampPalette(c("red", "yellow"))
> pal1
function (n) 
{
    x <- ramp(seq.int(0, 1, length.out = n))
    if (ncol(x) == 4L) 
        rgb(x[, 1L], x[, 2L], x[, 3L], x[, 4L], maxColorValue = 255)
    else rgb(x[, 1L], x[, 2L], x[, 3L], maxColorValue = 255)
}
<bytecode: 0x0000000013994d08>
<environment: 0x0000000013993b88>
> pal1(1)
[1] "#FF0000"
> pal1(2)
[1] "#FF0000" "#FFFF00"
> pal1(10)
 [1] "#FF0000" "#FF1C00" "#FF3800" "#FF5500" "#FF7100" "#FF8D00"
 [7] "#FFAA00" "#FFC600" "#FFE200" "#FFFF00"
> class(pal1)
[1] "function"
> class(pal1(2))
[1] "character"

可以看出,colorRampPalette中颜色是以颜色的16进制的表示来保存的。

> library(RColorBrewer)
> brewer.pal.info
         maxcolors category colorblind
BrBG            11      div       TRUE
PiYG            11      div       TRUE
PRGn            11      div       TRUE
PuOr            11      div       TRUE
RdBu            11      div       TRUE
RdGy            11      div      FALSE
RdYlBu          11      div       TRUE
RdYlGn          11      div      FALSE
Spectral        11      div      FALSE
Accent           8     qual      FALSE
Dark2            8     qual       TRUE
Paired          12     qual       TRUE
Pastel1          9     qual      FALSE
Pastel2          8     qual      FALSE
Set1             9     qual      FALSE
Set2             8     qual       TRUE
Set3            12     qual      FALSE
Blues            9      seq       TRUE
BuGn             9      seq       TRUE
BuPu             9      seq       TRUE
GnBu             9      seq       TRUE
Greens           9      seq       TRUE
Greys            9      seq       TRUE
Oranges          9      seq       TRUE
OrRd             9      seq       TRUE
PuBu             9      seq       TRUE
PuBuGn           9      seq       TRUE
PuRd             9      seq       TRUE
Purples          9      seq       TRUE
RdPu             9      seq       TRUE
Reds             9      seq       TRUE
YlGn             9      seq       TRUE
YlGnBu           9      seq       TRUE
YlOrBr           9      seq       TRUE
YlOrRd           9      seq       TRUE

可以看出RColorBrewer包含了多组颜色,输入”brewer.pal.info”可以显示出该包里颜色的信息,第一列为各组颜色的名称,第二列显示各组颜色含有的具体颜色的数量,第三列显示所属的类型,即三个调色板中的哪一个,第4列显示是否为色盲友好色,即是否会影响色盲色弱人士对颜色的加工。

cols <- brewer.pal(3, "Greens")
pal2 <-colorRampPalette(cols)
image(volcano, col = pal2(20))

这里写图片描述
赋予对象cols三个RColorBrewer包中的三个颜色,赋予对象pal2一个函数:以cols中三个颜色为端点从colorRampPalette中选取颜色。第三行数据的作用为生成图像,以cols中三个颜色为端点,从colorRampPalette中选取20个颜色。可以看出,所有颜色均为绿色

查看从RColorBrewer包中的Greens颜色中抽取的三个颜色是什么:

display.brewer.pal(3, "Greens")

这里写图片描述
可以看出,抽取的三个颜色均为绿色,因此从这三个端点进行选取的20个颜色,也均为绿色。

5. 图形设备

使用R可以将图像生成PDF文件保存下来,主要有两种方式:
- 直接在文件设备上生成
- 在屏幕设备上作图,复制到文件设备上
两种方式都需要打开文件设备,因此,在保存完成后需要调用”dev.off()”函数关闭文件设备。
如:

pdf(file = "myfig.pdf")
with(airquality, plot(Wind, Temp, main = "Wind and Temp in NYC"))
dev.off()

上述程序使用的是第一种方法:在工作路径上生成myfig.pdf文件,然后在该文件上作图。过程中R上不会出现pdf文件中的图像。

with(airquality, plot(Wind, Temp, main = "Wind and Temp in NYC"))
dev.copy(png, file = "mycopy.png")
dev.off()

上述程序使用的是第二种方法:在屏幕设备上生成风速和温度的散点图,然后将该图复制到文件设备上(在工作路径上生成内容为风速和温度的散点图的myfig.pdf文件),我们可以在R上看到该图像。

猜你喜欢

转载自blog.csdn.net/woooooood/article/details/81318496