这是一个测试df:
a <- 5:8
b <- c("A", "B", "C", "D")
df <- data.frame(a,b)
Run Code Online (Sandbox Code Playgroud)
我想创建一个条形图并在每个条形图上方添加文字,在顶部下方一定距离,因此我使用y=Inf, vjust=2,但字母现在由它们的顶部而不是字母的底部对齐(即它们不会坐在同一水平线上).有没有办法改变这种情况(不必vjust=2.45为"短"的东西改变某些类似的东西)?
ggplot(df, aes(x=b, y=a)) + geom_bar(stat="identity") +
scale_y_continuous(limits = c(0,9)) +
annotate('text', x=1, y=Inf, vjust=2, label = "a", parse=TRUE) +
annotate('text', x=2, y=Inf, vjust=2, label = "a", parse=TRUE) +
annotate('text', x=3, y=Inf, vjust=2, label = "b", parse=TRUE) +
annotate('text', x=4, y=Inf, vjust=2, label = "b", parse=TRUE)
Run Code Online (Sandbox Code Playgroud)

答案很简单:使用单个"annotate"命令而不是多个命令.编辑:如果parse参数设置为TRUE(如在您的代码段中),此方法将失败.:) 祝好运.
library(ggplot2)
a <- 5:8
b <- c("A", "B", "C", "D")
df <- data.frame(a,b)
ggplot(df, aes(x=b, y=a)) + geom_bar(stat="identity") +
scale_y_continuous(limits = c(0,10)) +
# This is the difference to yor code:
annotate("text", x = 1:4, y = Inf, vjust=2, label = c("a", "a", "b", "b"))
Run Code Online (Sandbox Code Playgroud)

这实际上包含在以下的R文档中annotate:(最后一行?annotate)
p + annotate("text", x = 2:3, y = 20:21, label = c("my label", "label 2"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1621 次 |
| 最近记录: |