跳至主要内容

R 中的 PCH 教程

在本教程中,了解 R 中的绘图字符(PCH)。
· 5分钟 阅读

使用 AI 探索

绘图字符(plot character)或 pch 是在许多 R 函数中用于设置绘制字符的标准参数。

可以通过多种形式在图中添加说明性文本,包括坐标轴标签、标题、图例,或直接在图上添加文本。R 的基础图形函数通常会默认创建坐标轴标签,但也可以通过 xlab() 参数提供自定义的 x 轴标签,以及通过 ylab() 提供自定义的 y 轴标签来覆盖默认设置。

某些基础图形函数也会提供默认标题,但同样可以像下面这样通过参数进行覆盖:

library(MASS)
par(mfrow = c(1, 2))
plot(density(geyser$waiting))
plot(density(geyser$waiting), main = "Estimated density: \n Old Faithful waiting times")
R 中的 PCH 教程

左侧的图使用了 density 函数返回的默认标题,它告诉我们该图是由该函数使用其默认选项生成的,同时给出了我们正在绘制密度的变量的 R 规范。在右侧的图中,通过指定可选参数 main 覆盖了默认标题。请注意,通过包含换行符 \n(反斜杠 n),我们在这个字符串中创建了一个两行标题。

text() 函数

与 lines 和 points 函数类似,text 是一个低级图形函数,允许我们向现有图形添加说明性文本。为此,必须指定 x 和 y 的值(文本在图上的坐标位置),以及 labels(一个字符向量,指定要添加的文本)。

text(x, y, adj)
R 中的 PCH 教程

默认情况下,添加到图中的文本会以指定的 x 值为中心,但可以使用可选参数 adj 调整对齐方式。

需要注意的是,text() 函数的 adj 参数决定文本的水平位置,它可以取 0(左对齐)到 1(右对齐)之间的任意值。实际上,该参数也可以取该范围之外的值。也就是说,将该值设为负数会使文本从指定的 x 位置右侧开始。同样,将 adj 设为大于 1 会使文本在 x 位置的左侧结束。

library(MASS)
plot(UScereal$fibre)
text(5, 28, "<-- Outliers [left-justified text at (5, 28)]", adj = 0)
text(65, 23, "[Right-justified text at (65, 23)]", adj = 1, col = "red")
text(5, 28, "[Centered text (default) at (31, 18)]", col = "blue")
R 中的 PCH 教程

字体、方向与其他文本特性

下面展示了通过 text 函数的可选参数更改添加文本外观的一些方法。默认情况下,文本在页面上沿水平方向创建,但可以通过 srt 参数进行更改,该参数指定相对于水平轴的旋转角度。

例如,红色文本由于将 srt 指定为正的 30 度而向上倾斜,而绿色文本由于将 srt 指定为 -45 而向下倾斜。

我们还可以使用 col 参数指定文本颜色,红色文本还展示了可以使用 cex 参数更改文本大小。通过指定 cex = 1.2,我们将文本设定为比正常大小大 20%。

本例中修改的另一项文本特性是字体,由 font 参数设置。默认值为 font = 1(常规体),font = 2 表示粗体,font = 3 表示斜体,font = 4 表示粗体加斜体。

library(MASS)
plot(Boston$rad)

# "Inner city" with adjusted colour and rotation
text(350, 24, adj = 1, "Inner city? -->", srt = 30, font = 2, cex = 1.2, col = "red")

# "Suburbs" with adjusted colour and rotation
text(100, 15, "Suburbs? -->", srt = -45, font = 3, col = "green")

title("Text with varying orientations, fonts, sizes & colors")
R 中的 PCH 教程

调整文本位置、大小与字体

在以下示例中,您将:

  • 从 Cars93 数据框绘制 MPG.city 与 Horsepower 的关系图,数据以空心圆表示(默认 pch)。
  • 使用 which() 函数构造变量 index3,以标识包含所有 3 缸汽车的行号。
  • 使用 points() 函数在图中所有代表 3 缸汽车的点上覆盖实心圆(pch = 16)。
  • 像之前一样使用 text() 函数并以 Make 变量作为标签,在 3 缸汽车的右侧添加标签,但这次使用 adj = 0.2 将标签进一步右移,使用 cex 参数将标签大小增加 20%,并使用 font 参数将标签设置为粗斜体。
# Plot MPG.city vs. Horsepower as open circles
plot(Cars93$Horsepower, Cars93$MPG.city)

# Create index3, pointing to 3-cylinder cars
index3 <- which(Cars93$Cylinders == 3)

# Highlight 3-cylinder cars as solid circles
points(Cars93$Horsepower[index3],
       Cars93$MPG.city[index3],
       pch = 16)

# Add car names, offset from points, with larger bold text
text(Cars93$Horsepower[index3],
     Cars93$MPG.city[index3],
     Cars93$Make[index3],
     adj = -0.2, cex = 1.2, font = 4)

运行上述代码后,将得到如下结果:

R 中的 PCH 教程

亲自试一试。

要了解更多关于在图中添加文本的内容,请观看我们课程 Data Visualization in R 的此视频。

本内容选自 DataCamp 的 Ronald Pearson 所授课程 Data Visualization in R。

主题