添加文本到ggplot

Ros*_*nne 25 label r ggplot2

(更新)我有像这样的ggplot,但随后x轴日期缩放:

g1 <- ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar()
Run Code Online (Sandbox Code Playgroud)

高于两个柱(比如说VS2和IF,但在我的图中它是一个日期)我想在高度为13.000的条形图上方放置一个文本标签.

我尝试了很多东西,但这是最接近的:这是我在我的图表中尝试使用日期轴g1 + geom_text(aes(as.Date("2014-10-05"),13000),label = "船")

但这只会在图表中添加一个,并且只要我尝试扩展它,例如使用

g1 + geom_text(aes(c(as.Date("2014-10-05"),as.Date("2014-10-20")) , 13000), label=c("boat", "train"))
Run Code Online (Sandbox Code Playgroud)

然后我得到错误:

错误:美学必须是长度为1或与dataProblems相同的长度:c(as.Date("2014-10-05"),as.Date("2014-10-20"))

我还尝试从数据框(oefen)中读取文本和标签,其中我使用与原始图相同的名称

g1 + geom_text(data=oefen, aes(x=newdat, y=Number, label=oefen$labs, fill=1))
Run Code Online (Sandbox Code Playgroud)

我收到了错误

错误:提供给离散比例的连续值

我尝试了很多其他解决方案,但找不到答案.我错过了什么?

law*_*yeR 68

考虑使用annotate()在绘图上的给定位置放置您想要的任何文本.因子变量,如x轴上的清晰度因子,每个级别都有一个数字,因此您可以使用该数字来定位文本.我假设日期变量具有相同的用法:

ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar() +
  annotate("text", x=8, y=13000, label= "boat") + 
  annotate("text", x = 4, y=13000, label = "ship")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

评论后编辑

为了提高效率,您可以组合注释,例如:

ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar() +
  annotate("text", x = c(2,4,6,8), y=13000, label = c("two", "ship", "six", "boat"))
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢,这正是我要找的。之前试过用annotate,后来不行,可能是太乱了。我只是想知道我想添加 6 个标签是否有办法将它们全部组合在一个脚本中而不是使用 annotate 六次?无论如何,我现在将它放下 6 次,因为它终于起作用了。非常感谢!! (2认同)