ggplot2作图详解5:图层语法和图形组合

本文详细介绍了ggplot2的图层设置,包括几何和统计类型、位置调整参数以及图层组合。通过示例展示了如何使用geom_point和stat_identity创建相同图形,探讨了图层的顺序、数据和映射的组合规则,以及不同数据类型的图层组合方法。同时,文中提醒在组合图形时要注意数据类型和映射的一致性。
摘要由CSDN通过智能技术生成

图层设置是ggplot2做图的关键。通过查看ggplot图形对象的数据结构我们了解到一个图层至少包含几何类型、统计类型和位置调整三方面的东西,当然数据和映射得首先建立。如果把ggplot2当成是太极,这些内容的设置就相当于太极的招式,有固定方法;对招式理解透彻后以随意对它们进行组合,并融合数据层面的一些设置(如分面、美学属性映射等)创造出用于解决问题的完美图形。

1 图层的几何和统计类型

1.1 几何/统计类型设置函数

在ggplot2中,每种几何类型都有对应的(默认)统计类型,反之亦然。两者不分家,所以得放在一起来说。几何类型的设置函数全部为geom_xxx形式,而统计类型设置函数全部为stat_xxx的形式:

library(ggplot2)
ls("package:ggplot2", pattern="^geom_.+")
##  [1] "geom_abline"     "geom_area"       "geom_bar"       
##  [4] "geom_bin2d"      "geom_blank"      "geom_boxplot"   
##  [7] "geom_contour"    "geom_crossbar"   "geom_density"   
## [10] "geom_density2d"  "geom_dotplot"    "geom_errorbar"  
## [13] "geom_errorbarh"  "geom_freqpoly"   "geom_hex"       
## [16] "geom_histogram"  "geom_hline"      "geom_jitter"    
## [19] "geom_line"       "geom_linerange"  "geom_map"       
## [22] "geom_path"       "geom_point"      "geom_pointrange"
## [25] "geom_polygon"    "geom_quantile"   "geom_raster"    
## [28] "geom_rect"       "geom_ribbon"     "geom_rug"       
## [31] "geom_segment"    "geom_smooth"     "geom_step"      
## [34] "geom_text"       "geom_tile"       "geom_violin"    
## [37] "geom_vline"
ls("package:ggplot2", pattern="^stat_.+")
##  [1] "stat_abline"      "stat_bin"         "stat_bin2d"      
##  [4] "stat_bindot"      "stat_binhex"      "stat_boxplot"    
##  [7] "stat_contour"     "stat_density"     "stat_density2d"  
## [10] "stat_ecdf"        "stat_function"    "stat_hline"      
## [13] "stat_identity"    "stat_qq"          "stat_quantile"   
## [16] "stat_smooth"      "stat_spoke"       "stat_sum"        
## [19] "stat_summary"     "stat_summary2d"   "stat_summary_hex"
## [22] "stat_unique"      "stat_vline"       "stat_ydensity"

很多,有小部分是相同的。如果一个个介绍就得写成说明书了,跟软件包作者写的函数说明没什么两样;再说也没必要,不是每个人都会用到全部的类型。下面看一下几何函数geom_point和统计函数stat_identity的参数:

# 函数说明,非运行代码
geom_point(mapping = NULL, data = NULL, stat = "identity",
           position = "identity", na.rm = FALSE, ...)
stat_identity(mapping = NULL, data = NULL, geom = "point",
              position = "identity", width = NULL,
              height = NULL, ...)

有4个参数是一样的:映射(mapping)、数据(data)、位置(position)和点点点(Dot-dot-dot: …)。H.W.特别强调了mapping和data参数的先后顺序在几何/统计类型设定函数和ggplot函数中的差别:ggplot函数先设定数据,再设定映射;而几何/统计类型函数则相反,因为确定作图或统计之前一般都已经有数据,只需指定映射即可。如果不写参数名,它们的用法是这样的:

# 示例,非运行代码
ggplot(数据, 映射)
geom_xxx(映射, 数据)
stat_xxx(映射, 数据)

"点点点"参数是R语言非常特殊的一个数据类型,用在函数的参数用表示任意参数,在这里表示传递给图层的任意参数如color, shape, alpha等。

前面我们一直用geom_point来做散点图,其实完全可以用stat_identity来做,得到的图形是完全相同的:

# 取ggplot2的diamonds数据集的一部分数据:
set.seed(100)
d.sub <- diamonds[sample(nrow(diamonds), 500),]
p <- ggplot(d.sub, aes(x=carat, y=price))
theme_set(theme_bw())
p + stat_identity()
p + geom_point()

查看图层组成可以看到两者都有geom_point、stat_identity和position_identity:

(p + stat_identity())$layers
## [[1]]
## geom_point:  
## stat_ident
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值