ggplot2作图详解3:映射(mapping)

该博客详细解析了ggplot2中的映射(mapping)功能,包括颜色和形状类型的映射,如color、fill、shape等,以及位置类型映射如x、y、xmin、xmax等。文章介绍了映射的过程、标尺设定、图例生成以及非映射设置,并通过实例展示了映射在数据分组、颜色标尺调整和图例创建等方面的应用。此外,还提到了特殊类型映射如group和order,以及如何处理不同数据类型的映射问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作图前的数据准备工作不仅仅指原始数据的收集,还包括数据外观的整理,这些工作对后续的作图无疑十分重要。和其他作图方法相比,ggplot2的优点之一就是把数据整理融合到了作图过程中,替用户分担了数据整型的部分工作。ggplot2数据层面的操作包括映射和分面。先说映射。

1 映射的类型

前面我们已经了解到ggplot对象的data项存储了整个数据框的内容,而“映射”则确定如何使用这些数据。

ggplot2按照图形属性提供了以下可用映射类型:

  • 颜色类型映射:包括 color(颜色或边框颜色)、fill(填充颜色)和 alpha(透明度)
  • 形状类型映射:包括 linetype(线型)、size(点的大小或线的宽度)和 shape(形状)
  • 位置类型映射:包括 x, y, xmin, xmax, ymin, ymax, xend, yend
  • 特殊类型:包括两类,一类是指定数据分组和顺序的映射group和order,另一类是字符串映射。

前两种类型是经典的美学属性映射,第三类的x和y映射也常规,第四类很特别,尤其是字符串映射,很另类,其他类型的映射都可以用aes函数指定,但H.W.为字符串映射专门造了个函数:aes_string。不知道他对字符串特别关照还是实在想不出其他解决方案。

2 颜色和形状类型映射

规律性的东西简单轻松,大家都喜欢;而到处暗藏潜规则、充斥着特例的东西(比如plotrix、perl和中国社会)很杂碎很累人,当然也很让人烦躁和讨厌。ggplot2中颜色和形状这两类映射最符合台面规则的,即:把数据框的变量和图形的美学属性对应起来。

2.1 映射的过程

先看下面ggplot2的数据diamonds:

library(ggplot2)
set.seed(100)
d.sub <- diamonds[sample(nrow(diamonds), 500), ]
head(d.sub, 4)
##       carat       cut color clarity depth table price    x    y    z
## 16601  1.01 Very Good     D     SI1  62.1    59  6630 6.37 6.41 3.97
## 13899  0.90     Ideal     D     SI1  62.4    55  5656 6.15 6.19 3.85
## 29792  0.30     Ideal     D     SI1  61.6    56   709 4.34 4.30 2.66
## 3042   0.30 Very Good     G     VS1  62.0    60   565 4.27 4.31 2.66

作图首先要指定x和y数据,即建立数据框变量和x/y之间的映射:

p  <- ggplot(data=d.sub, aes(x=carat, y=price))

作出散点图:

theme_set(theme_bw())
p  + geom_point()

如果还要建立其他映射,比如用钻石颜色(color)分类数据确定点的颜色,图形外观就会发生变化(为方便说明,先去掉图例):

p  + geom_point() + aes(color=color) + theme(legend.position=c(2,2))

ggplot2映射的过程可以用plot函数作图步骤进行分解,它包含三方面的操作(不包括图形页面设置):

  • 数据分组
  • 设定颜色标尺
  • 按颜色标尺指定每组数据的颜色

# 设定颜色标尺
levs  <- levels(d.sub$color)
cl  <-  rainbow(length(levs))
# 页面设置
par(mar=c(3,3,0.5,0.5), mgp=c(1.5, 0.5, 0), bg="white")
plot(d.sub$carat, d.sub$price, type='n', xlab="carat", ylab="price")
i  <- 1
for(lev in levs){
        
  # 数据分组
  datax  <- d.sub[d.sub$color==lev, ]
  # 作图并指定数据点颜色
  points(datax$carat, datax$price, pch
### ggplot2 中 `geom_point` 的用法 在 R 语言的数据可视化库 ggplot2 中,`geom_point()` 是用于创建散点的主要函数之一。它通过绘制数据点来表示两个变量之间的关系。以下是关于其基本语法和常见参数的说明: #### 基本语法 ```r geom_point(mapping = NULL, data = NULL, stat = "identity", position = "identity", ..., na.rm = FALSE, show.legend = NA, inherit.aes = TRUE) ``` - **mapping**: 定义映射,通常使用 `aes(x, y)` 来指定 x 和 y 轴上的变量[^4]。 - **data**: 数据框或表格形式的数据集,默认情况下继承自整个绘对象中的数据源[^5]。 - **stat**: 统计方法,默认为 `"identity"` 表示直接使用原始数据值而不进行任何统计转换[^6]。 - **position**: 控制点的位置调整方式(如重叠处理),默认为 `"identity"` 不做修改[^7]。 #### 参数详解 除了上述基础选项外,还可以设置其他属性来自定义外观: - **color**: 设置点的颜色。 - **size**: 改变点大小。 - **shape**: 更改标记形状 (支持多种内置样式编号)[^8]。 - **alpha**: 添加透明度效果以减少密集区域遮挡问题[^9]。 下面给出一个简单的例子展示如何利用这些功能构建: ```r library(ggplot2) # 创建样本数据 df <- data.frame( x_var = c(1, 2, 3), y_var = c(4, 5, 6)) # 使用 geom_point() 函数作图 p <- ggplot(df, aes(x=x_var, y=y_var)) + geom_point(color="blue", size=4, shape=17) print(p) ``` 此脚本会生成一张蓝色圆形标注尺寸较大的散点分布[^10]。 对于可能遇到的一些错误情况比如性能瓶颈或者特定依赖缺失等问题,则需参照官方文档进一步排查具体原因并采取相应措施解决它们。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值