2017-05-20 16:29:04
数据可视化(Data Visualization): 将抽象的科学或者商业数据用图像表示出来,帮助理解数据的意义的过程。可视化并不独立于分析过程,两者往往相伴、迭代推进。
为什么要做可视化? 图形传达信息的效率更高
变量映射(数据==>可视化结果)的过程就是视觉编码(visual encoding)。
作图前的数据准备: 各个变量分别映射到哪个视觉通道(visual channel)上?通常,
x 变量映射到x轴或角度y 变量映射到y轴或半径group变量映射到分组

Jacques Bertin, Semiology of Graphics, 1967


| 通道 | 分类数据 Categorical | 有序数据 Ordinal | 定量数据 Quantitative |
|---|---|---|---|
| 位置 position | |||
| 长度 length | |||
| 亮暗 luminance | |||
| 纹理 texture | |||
| 颜色 color | |||
| 角度 angle | |||
| 形状 shape |
(Jacques Bertin, 1967)
| 序号 | 分类数据 | 有序数据 | 定量数据 |
|---|---|---|---|
| 1 | |||
| 2 | |||
| 3 | |||
| 4 | |||
| 5 | |||
| 6 | |||
| 7 |
| 序号 | 分类数据 | 有序数据 | 定量数据 |
|---|---|---|---|
| 8 | |||
| 9 | |||
| 10 | |||
| 11 | |||
| 12 | |||
| 13 |
by Mackinlay, Automating the Design of Graphical Presentations of Relational Information, 1986
by Mackinlay, Tversky, & E. Tufte














| 颜色系统 | 黑 | 灰 | 天蓝 | 番茄 | |
|---|---|---|---|---|---|
| 色名 | 文本, 颜色名字 | "black" | "gray" | "skyblue" | "tomato" |
| RGB空间 | 向量, rgb(Red, Green, Blue, <Alpha>) |
rgb(0, 0, 0) | rgb(190, 190, 190, max=255) | rgb(135, 206, 235, max=255) | rgb(255, 99, 71, max=255) |
| HCL空间 | Hex文本, "#Hue Chroma Luminance <Transparency>" |
#000000FF | #BEBEBEFF | #86CEEBFF | #FF6347FF |
| HSV空间 | 向量, hsv(Hue, Saturation, Value, <Tranparency>) |
hsv(0, 0, 0) | hsv(0, 0, 0.74510) | hsv(0.548, 0.426, 0.922) | hsv(0.025, 0.722, 1) |

colorspace包,或
> col2hcl("pink")
[1] "#FFC0CBFF"
col2rgb> col2rgb("pink")
[,1]
red 255
green 192
blue 203
rgb2hsv> rgb2hsv(255, 190, 77, max=255)
[,1]
h 0.1058052
s 0.6980392
v 1.0000000grDevices包中
colors()demo(colors)展示内建颜色各种效果
rgb: R, G, B, A均可0-1或0-255hsv: H, S, V, A均可0-1或0-255hcl颜色编码library(scales)
show_col(c("#7AC143", "#7D3F98", "#F47721",
"#D20962", "#00A78E", "#00BCE4"))

show_col(c(rgb(1, 1, 1), rgb(0.5, 0, 0),
rgb(0, 0.5, 0), hsv(0, 0, 0.5),
hsv(1, 0.5, 1), hsv(0.5, 1, 0.5)))

grDevices包中的gray()> gray(c(0.1, 0.5, 0.8)) # 取灰度0.1, 0.5, 0.8 [1] "#1A1A1A" "#808080" "#CCCCCC" # 返回hcl值
colorRamp()和colorRampPalette(): 生成色阶定义函数> pal <- colorRamp(c("red", "green", "violet")) # 定义色阶
> pal(c(0.4, 0.75)) # 在该色阶上取0.4, 0.75分位
[,1] [,2] [,3] # 三列分别代表红、绿、蓝
[1,] 51 204.0 0 # 两行分别代表0.4和0.75分位
[2,] 119 192.5 119
> pal <- colorRampPalette(c("red", "green", "violet")) # 定义同样的色阶
> pal(5) # 自动从色阶中等距取5种颜色,返回hcl值
[1] "#FF0000" "#7F7F00" "#00FF00" "#77C077" "#EE82EE"RColorBrewer包display.brewer.all()
brewer.pal.infolibrary(RColorBrewer) cols <- brewer.pal(n=3, name="RdYlGn") cols
## [1] "#FC8D59" "#FFFFBF" "#91CF60"
scales::show_col(cols)

pal <- colorRampPalette(cols) image(volcano, col = pal(20))

Thank you!