答案 0 :(得分:4)
您还可以根据数据值以编程方式设置标签的位置。 ggplot2
默认为30个分箱,因此下面的代码使用30个分箱来设置标签位置的y值:
set.seed(101)
x <- rnorm(100)
qplot(x) +
annotate("text", label=paste0("N = ", length(x)), x=max(x), y=max(table(cut(x, 30))))
或
qplot(x) +
geom_text(aes(label=paste0("N = ", length(x)), x=max(x), y=max(table(cut(x, 30)))))
更新:要解决您的评论,请使用离散x向量绘制。现在,如果我们仍然希望文本的y位置达到最大值,我们再次找到具有最大计数的类别。数据已经是离散的,因此我们只需要y=max(table(x))
。对于x位置,如果我们希望标签处于最大x值,我们需要唯一x类别的数量,因为ggplot隐含地将这些从1到N编号(其中N是类别的数量)。 unique
函数返回包含每个唯一类别的向量。我们只需要这个向量的长度来获得图中的最大x值:x=length(unique(x))
。
set.seed(101)
x <- cut(rnorm(100), 5)
qplot(x) +
geom_text(aes(label=paste0("N = ", length(x)), x=length(unique(x)), y=max(table(x))))
答案 1 :(得分:2)
很多方法。 geom_text
是最常用的工具。对于一次性标签,可能是annotate
:
qplot(x) +
annotate("text",x = Inf,y = Inf,label = "N = 100",hjust = 1.5,vjust = 1.5)
答案 2 :(得分:2)
其他答案显示了如何将文本添加到绘图中。但annotate()
也可用于添加其他geom。例如,如果要将注释放在矩形内,可以执行以下操作:
x0 <- max(x)
y0 <- max(table(cut(x, 30)))
qplot(x) +
annotate("rect", xmin = x0*.8, xmax = x0*1.2, ymin = y0*.95, ymax = y0*1.05,
fill = "white", colour = "black") +
annotate("text", label = paste0("N = ", length(x)), x = x0, y = y0)
给出了
直到以annotate("rect",
开头的行,所有内容都取自此问题的其他答案。
答案 3 :(得分:1)