R语言学习

ggplot2 001 图形语法

2020-08-20  本文已影响0人  caoqiansheng

ggplot2是R语言最流行的第三方扩展包,包名中“gg”是图形语法(grammar of graphics)的简称,Wickham Hadley将这套语法诠释如下:
一张统计图形就是从数据到几何对象(geometric object,缩写geom)的图形属性(aesthetic attribute,缩写aes)的一个映射。此外,图形中还可能包含数据的统计变换(statistical transformation,缩写stats),最后绘制在某个特定的坐标系(coordinate system,缩写coord)中,而分面(facet)则可以用来生成数据不同子集的图形。

1.ggplot2绘图语言组件:

2.ggplot语法

2.1 ggplot语法架构

ggplot语法框架

2.2 绘图语法构成

ggplot(data = NULL, mapping = aes()) +            # 基础图层,不出现图形元素    
geom_XXX() +                                      # 几何图层                                
stat_XXX() +                                      # 统计变换                                
scale_XXX() +                                     # 度量调整,调整具体的标度                                         
coord_XXX() +                                     # 坐标变换,默认为笛卡尔坐标系
facet_XXX() +                                     # 分面系统,将某个变量进行分面变换
guides() +                                        # 图例调整
theme()                                           # 主题设定
2.2.1 ggplot()

ggplot()是底层绘图函数,其中data为主要是数据框(data.frame)格式的数据集;MAPPING 变量的视觉通道映射,用来表示变量 x 和 y,还可以用来控制颜色(color),大小(size)或形状(shape)等视觉通道;STAT 表示统计变换,与 stat_xxx()相对应,默认为“identity”(无数据变换);POSITION 表示绘图数据系列的位置调整,默认为“identity”(无位置调整)。

2.2.2 geom_xxx(),stat_xxx()

通常情况下,绘图使用几何对象函数 geom_xxx(),只有当绘图表涉及统计变换时,才会用统计变换函数 stat_xxx(),比如绘制带误差线的均值散点图或者柱形图等。根据函数输入的变量总数与数据类型,大致可以将函数分为三个大类,六个小类。
https://mubu.com/doc/1Oz9rtR8kne

geom & stat
2.2.3 aes() 视觉通道映射

视觉映射参数需要个性化映射时(也即一一对应),此时参数应写在aes()内部,而如果是需要统一设定某些图表元素对象时,应将参数写在aes()外部

2.2.4 scale_X_XX() 度量调整

度量调整用于控制变量映射到视觉对象的具体细节,比如:x轴和 y 轴、透明度、轮廓颜色、填充色、线形状、形状等,它们都有对应的度量函数。根据视觉通道映射的变量属性,可以将度量函数分成数值型和类别型变量两大类​
ggplot2 的默认度量为scale_xxx_identity():scale_color_identity(), scale_fill_identity(), scale_shape_identity(), scale_linetype_identity(), scale_alpha_identity(), scale_size_identity(), scale_discrete_identity(), scale_continuous_identity()

2.2.5 coordinate 坐标系
2.2.6 guide 图例

调整连续变量的图例:guide_colorbar()/guide_colourbar(),guide_legend()
调整离散变量的图例:guide_legend()
也可以在 scale_xxx()度量中指定 guide 类型,guide="colorbar"或 guide="legend"

2.2.7 theme 主题系统

主题系统包括绘图区背景、网格线、坐标轴线条灯图表细节部分
文本(text):element_text()
矩形(rect):element_rect()
线条(line):element_line()
element_back:表示设置为无

2.2.8 位置调整
2.2.9 色彩搭配
# Library(RColorBrewer)
p + scale_fill_brewer(palette="Set1")
# Library(viridis)
p + scale_fill_viridis(option = "plasma", discrete = TRUE)
# Library(wesanderson)
p + scale_fill_manual(values=wes_palette("Darjeeling1")[c(1,3,5)]),
p + scale_fill_manual(values = c("#E7298A", "#66A61E", "#E6AB02"))
# Library(RColorBrewer)
p + scale_fill_distiller(palette = "RdYIBu")
# Library(viridis)
p + scale_fill_virdis(option = "viridis", descrete = FALSE)
# 自定义连续的颜色条,mean(df$age)表示 age 均值对应中间色 white
p + scale_fill_gradien2(low = "#00A08A", mid = "white", high="#FF0000", midpoint = mean(df$age))
# R 语言预色调色板 terrain.colors()
p + scale_fill_gradientn(colors = terrain.colors(10))

Reference

R语言数据可视化之美-专业突变绘制指南(增强版),张杰

上一篇下一篇

猜你喜欢

热点阅读