HOWTO · R

在 R 中旋转轴标签

本教程演示了如何在 R 的图中旋转轴标签。

本页内容

Base R 和 ggplot2 在 R 中旋转轴标签的方式不同。本教程演示如何在 R 中旋转轴标签。

在 Base R 中旋转刻度标签

在 base R 中,我们可以将轴标签旋转为水平方向、竖直方向,或使其垂直于坐标轴。让我们首先展示要旋转标签的图,然后演示每种方法。
las 参数控制刻度标签的方向,共有四个值:

  • las = 0:标签与坐标轴平行(默认值)。
  • las = 1:标签为水平方向。
  • las = 2:标签垂直于坐标轴。
  • las = 3:标签为垂直方向。

示例代码:

# Create example data
set.seed(99999)

xLabel <- rnorm(1000)
yLabel <- rnorm(1000)

# The Default Plot
plot(xLabel, yLabel)

输出:

默认绘图

水平刻度标签:

我们可以通过在图中传递 las=1 水平旋转轴标签。

示例代码:

# Create example Data
set.seed(99999)

xLabel <- rnorm(1000)
yLabel <- rnorm(1000)

# The Horizontal Axis Plot
plot(xLabel, yLabel, las=1)

上面的代码创建了一个带有水平轴标签的图。

输出:

水平图

垂直刻度标签:

我们可以通过在图中传递 las=3 来垂直旋转轴标签。

示例代码:

# Create example Data
set.seed(99999)

xLabel <- rnorm(1000)
yLabel <- rnorm(1000)

# The Vertical Axis Plot
plot(xLabel, yLabel, las=3)

上面的代码创建了一个带有垂直轴标签的图。

输出:

垂直图

垂直于轴的刻度标签:

我们可以通过在图中传递 las=2 来垂直于轴旋转轴标签。

示例代码:

# Create example Data
set.seed(99999)

xLabel <- rnorm(1000)
yLabel <- rnorm(1000)

# The Perpendicular Axis Plot
plot(xLabel, yLabel, las=2)

上面的代码创建了一个垂直于轴标签的图。

输出:

垂直轴图

las 值可以在 Base R 中的任何类型的绘图中更改。这些值影响图中的刻度标签,不会改变坐标轴标题。要设置或更改标题,请使用单独的参数,例如 xlab = "Horizontal value" 或 ylab = "Vertical value":

plot(xLabel, yLabel, las = 3,
     xlab = "Horizontal value", ylab = "Vertical value")

las 参数仅限于这四种有文档说明的方向。如果需要任意角度,请使用自定义的文字绘制方法或下面的 ggplot2 方法;使用 las 的 axis() 不能提供任意角度。

在 ggplot2 中旋转刻度标签

使用以下语法,我们可以旋转 ggplot2 中的刻度标签。使用 axis.text.x 设置 x 轴标签,使用 axis.text.y 设置 y 轴标签,并通过 element_text() 设置 angle、hjust 和 vjust。

plot + theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

标签将旋转 45 度角,vjust 和 hjust 将控制标签文本的垂直和水平对齐方式。让我们创建一个绘图,我们可以在 ggplot2 中旋转轴标签。

示例代码:

# Create example Data
Delftstack <- data.frame(Designation=c('CEO', 'Project Manager', 'Senior Dev', 'Junior Dev', 'Intern'),
                         Id=c(101, 102, 103, 104, 105))

library(ggplot2)

ggplot(Delftstack, aes(x = Designation, y = Id)) +
  geom_col()

上面的代码将从给定的数据创建一个默认图。

输出:

默认 ggplot2

在 ggplot2 中将刻度标签旋转 90 度

我们可以在 ggplot2 中将值 90 赋予将轴标签旋转 90 度的角度。

示例代码:

# Create example Data
Delftstack <- data.frame(Designation=c('CEO', 'Project Manager', 'Senior Dev', 'Junior Dev', 'Intern'),
                         Id=c(101, 102, 103, 104, 105))

ggplot(Delftstack, aes(x = Designation, y = Id)) +
  geom_col() +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1))

上面的代码将创建一个 x 轴刻度标签旋转 90 度的 ggplot2 图形。

输出:

90 度 Ggplot

在 ggplot2 中将刻度标签旋转 45 度

我们可以在 ggplot2 中将值 45 赋予将轴标签旋转 45 度的角度。

示例代码:

# Create example Data
Delftstack <- data.frame(Designation=c('CEO', 'Project Manager', 'Senior Dev', 'Junior Dev', 'Intern'),
                         Id=c(101, 102, 103, 104, 105))

ggplot(Delftstack, aes(x = Designation, y = Id)) +
  geom_col() +
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

上面的代码将创建一个 x 轴刻度标签旋转 45 度的 ggplot2 图形。

输出:

45 度 Ggplot

要旋转 y 轴刻度标签,请将主题目标改为 axis.text.y。如果要旋转坐标轴标题,请使用 axis.title.x 或 axis.title.y,例如 theme(axis.title.x = element_text(angle = 15))。这会作用于标题,而不是刻度标签文本。

选择角度和对齐方式

当类别名称较长或发生重叠时,先使用 90 度。标签可以斜向放置时尝试 45 度;如果文字看起来离坐标轴太远,再调整 hjust 和 vjust。合适的值取决于图形尺寸、字体和图形设备,因此请在预期尺寸下检查最终输出。旋转会改变文字方向,但不会自动为狭窄的绘图区增加空间。Base R 示例仅使用标准 graphics 包;ggplot2 示例需要 ggplot2 包和用于渲染绘图的设备。如果某个包不可用,请按照项目环境政策安装,而不要将示例改用其他绘图系统。