如何在ggplot2中旋转图中的注释文本(附实例)

714 阅读2分钟

你可以使用下面的基本语法来旋转ggplot2中图中的注释文本:

ggplot(df) +
  geom_point(aes(x=x, y=y)) + 
  geom_text(aes(x=x, y=y, label=group), hjust=-0.3, vjust=-0.1, angle=45)

在这个特殊的例子中,我们使用角度参数将注释文本逆时针旋转45度,使用hjustvjust参数增加文本与图中点的水平和垂直距离。

下面的例子展示了如何在实践中使用这种语法。

例子:在ggplot2中旋转标注的文本

假设我们在R中拥有以下数据集:

#create data frame
df <- data.frame(player=c('Brad', 'Ty', 'Spencer', 'Luke', 'Max'),
                 points=c(17, 5, 12, 20, 22),
                 assists=c(4, 3, 7, 7, 5))

#view data frame
df

   player points assists
1    Brad     17       4
2      Ty      5       3
3 Spencer     12       7
4    Luke     20       7
5     Max     22       5

现在假设我们在ggplot2中创建以下散点图来可视化这些数据:

library(ggplot2)

#create scatter plot with annotated labels
ggplot(df) +
  geom_point(aes(x=points, y=assists)) + 
  geom_text(aes(x=points, y=assists, label=player))

请注意,标签是水平的,直接位于点的上方。

我们可以使用下面的语法来旋转标签,并把它们移到离点稍远的地方,以使它们更容易阅读:

library(ggplot2)

#create scatter plot with annotated rotated labels
ggplot(df) +
  geom_point(aes(x=points, y=assists)) + 
  geom_text(aes(x=points, y=assists, label=player), hjust=-.3, vjust=-.1, angle=45) +
  ylim(3, 8)

请注意,现在标签都被逆时针旋转了45度。

请自由发挥hjustvjust角度参数的作用,让你的注释文本在图上处于你想要的任何位置。

注意:我们还使用了ylim参数来增加图上的y轴限制,这样图上顶部的标签 "Spencer "就不会被切断。

其他资源

下面的教程解释了如何在R中执行其他常见任务:

如何在ggplot2中旋转轴的标签
如何在ggplot2中改变点的大小
如何在ggplot2图中添加文本