如何使用 ggplot2 在横杆顶部添加数据标签
How to add data labels at the top of crossbars using ggplot2
我有一段代码可以很好地从数据框中绘制横线图,其中横线的底部和顶部分别代表观察值的最小值和最大值,交叉线代表平均值。
现在我被要求为条形顶部的平均值添加数据标签,这比我想象的要难。
我尝试使用 hjust、vjust、position_dodge 和 position_stack 调整标签位置 - 但没有任何效果符合我的需要
这里有人可以给点建议吗?
编辑 -
横线图的数据和代码示例可在此处找到 link:
我有什么不满意的?标签到处都是,我无法将它们放在任何指定位置。虽然我(好吧,我向其报告的经理)希望他们处于最高水平。
这是一个解决方案,使用前面 SO 问题中的数据,将均值放在方框的顶部,但下方的两个未对齐。
my.data <- structure(list(factor1 = structure(c(1L, 1L, 2L, 2L), .Label = c("oil1", "oil2"),
class = "factor"), factor2 = structure(c(1L, 2L, 1L, 2L), .Label = c("prod1", "prod2"),
class = "factor"), value = c(1.7, 1, 29.8, 31.3), err = c(1.5, 1, 2, 2),
min = c(0.2, 0, 27.8, 29.3), max = c(3.2, 2, 31.8, 33.3)), .Names = c("factor1", "factor2",
"value", "err", "min", "max"), class = "data.frame", row.names = c("1", "2", "3", "4"))
ggplot(data=my.data, aes(x=factor2, fill=factor1)) +
geom_crossbar(aes(y=value, ymin=min, ymax=max), position = position_dodge(width = 0.66), width=0.6) +
geom_text(aes(y = max, label = value, hjust = -0.6, vjust = -0.4))
我有一段代码可以很好地从数据框中绘制横线图,其中横线的底部和顶部分别代表观察值的最小值和最大值,交叉线代表平均值。
现在我被要求为条形顶部的平均值添加数据标签,这比我想象的要难。 我尝试使用 hjust、vjust、position_dodge 和 position_stack 调整标签位置 - 但没有任何效果符合我的需要
这里有人可以给点建议吗?
编辑 -
横线图的数据和代码示例可在此处找到 link:
我有什么不满意的?标签到处都是,我无法将它们放在任何指定位置。虽然我(好吧,我向其报告的经理)希望他们处于最高水平。
这是一个解决方案,使用前面 SO 问题中的数据,将均值放在方框的顶部,但下方的两个未对齐。
my.data <- structure(list(factor1 = structure(c(1L, 1L, 2L, 2L), .Label = c("oil1", "oil2"),
class = "factor"), factor2 = structure(c(1L, 2L, 1L, 2L), .Label = c("prod1", "prod2"),
class = "factor"), value = c(1.7, 1, 29.8, 31.3), err = c(1.5, 1, 2, 2),
min = c(0.2, 0, 27.8, 29.3), max = c(3.2, 2, 31.8, 33.3)), .Names = c("factor1", "factor2",
"value", "err", "min", "max"), class = "data.frame", row.names = c("1", "2", "3", "4"))
ggplot(data=my.data, aes(x=factor2, fill=factor1)) +
geom_crossbar(aes(y=value, ymin=min, ymax=max), position = position_dodge(width = 0.66), width=0.6) +
geom_text(aes(y = max, label = value, hjust = -0.6, vjust = -0.4))