参数及对应的标记形状如下:
需要注意的是,如果我们输出的是位图,填充标记符号 15-18 可能在渲染后出现失真的情况,它们将会出现锯齿,像素化,并且无法居中,无论它们是否源自相同的绘制平台。而标记符号 19 和 21-25 在填充区域外部有一个边框,这在绝大多数绘制平台中会使得它们在渲染后具有一个相对平滑的边缘。如果我们想让标记符号 21-25 看起来实心,那么我们就需要将其填充色(bg)调整为与边框色(col)一致,否则它们看起来就是空心的。
1、标准图形
我们可以使用 pch 参数设置数据点标记的形状,还可以用 lty 和 lwd 来调整它的类型和宽度,其中不同类型的线对应着不同的名称或数字序号。
set.seed(331)
# 添加数据点标记
# 构建绘图区域
par(mar=c(3,3,2,2))
plot(NA, xlim=c(1,4), ylim=c(0,1))
# 实心圆圈点+实线
points(1:4, runif(4), type="b", pch=19)
# 空心方框点+粗虚线
points(1:4, runif(4), type="b", pch=0, lty=2, lwd=3)
points(1:4, runif(4), type="b", pch=23,# 菱形点
lty="dotted", cex=2, # 点状线+数据点标记放大两倍
col="#000099", bg="#FF6666") # 蓝色线,红色填充
2、ggplot2
通过 ggplot2,我们可以对图中的点形状与线类型进行全局的部署(例如我们想让所有数据点都由方形表示,所有的线都为虚线),或者通过一个变量来调整它们。
# 示例数据
df <- read.table(header=T, text='
cond xval yval
A 1 2.0
A 2 2.5
B 1 3.0
B 2 2.0
')
library(ggplot2)
# 使用标准的线与点作图
# group = cond 表示我们以这个变量区分不同组别的点线关系
ggplot(df, aes(x=xval, y=yval, group = cond)) +
geom_line() +
geom_point()
# 设置全局的点形状和线类型
ggplot(df, aes(x=xval, y=yval, group = cond)) +
geom_line(linetype="dashed", # 虚线
size = 1.5) + # 粗线
geom_point(shape = 0, # 空心方块
size = 4) # 大型点标记
# 根据变量 cond 调整点形状和线类型
ggplot(df, aes(x=xval, y=yval, group = cond)) +
geom_line(aes(linetype=cond), # 线的类型取决于cond
size = 1.5) + # 粗线
geom_point(aes(shape=cond), # 点形状取决于cond
size = 4) # 大型点标记
# 和之前类似,这里我们同时改变了线类型和点形状的设置
ggplot(df, aes(x=xval, y=yval, group = cond)) +
geom_line(aes(linetype=cond), # 线的类型取决于cond
size = 1.5) + # 粗线
geom_point(aes(shape=cond), # 点形状取决于cond
size = 4) + # 大型点标记
scale_shape_manual(values=c(6,5)) + # 改变点形状
scale_linetype_manual(values=c("dotdash", "dotted")) # 改变线类型