所以我正在使用这个数据框:
xym <- data.frame(
Var1 = c("vloga", "odlo?itve", "dolgoro?no",
"krizno", "uživa v", "vloga", "odlo?itve",
"dolgoro?no", "krizno", "uživa v", "vloga",
"odlo?itve","dolgoro?no", "krizno", "uživa v",
"vloga","odlo?itve", "dolgoro?no", "krizno",
"uživa v"),
Var2 = c("Nad","Nad", "Nad", "Nad", "Nad", "Pod",
"Pod", "Pod", "Pod", "Pod", "Enak","Enak",
"Enak", "Enak", "Enak", "Sam.", "Sam.", "Sam.",
"Sam.", "Sam."),
value = c(4, 3, 4, 4, 3, 3, 3, 2, 3, 3, 3, 2.5, 2.5,
2, 3.5 ,5 ,6 ,6 ,5 ,6))
Run Code Online (Sandbox Code Playgroud)
并使用此代码:
p <- ggplot(xym, aes(x = Var1, y = value, fill = Var2)) + coord_flip()+
theme_bw() + scale_fill_manual(values = c("yellow", "deepskyblue1", "yellowgreen","orchid4")) + xlim(rev(levels(xym$Var1)))+ theme(axis.title=element_blank(),axis.ticks.y=element_blank(),legend.position = "bottom",
axis.text.x = element_text(angle = 0,vjust = 0.4)) +
geom_bar(stat = "identity", width = 0.7, position = position_dodge(width=0.7)) +
geom_text(aes(x = Var1, y =max(value), label = round(value, 2), fill = Var2),
angle = 0, position = position_dodge(width = 0.7), size = 4.2)
p + labs(fill="")
p + stat_summary(fun.y=mean, colour="red", geom="line", aes(group = 1))
Run Code Online (Sandbox Code Playgroud)
我产生输出:
但是在按问题标记总平均值的红线旁边(即“dolgoro?no”,“krizno”等)我想添加点和旁边的条形以及单个问题组的标签平均值
我的输出应该看起来像下面的图片(我用油漆做的),其中黑点代表我想要的点,第一个点的值 3.6 是 (6,2,4,2.5) 的平均值,代表我的所需的值标签。
我也看过:
一种选择如下。我按照你的代码添加了几行。
# Your code
p <- ggplot(xym, aes(x = Var1, y = value, fill = Var2)) +
coord_flip() +
theme_bw() +
scale_fill_manual(values = c("yellow", "deepskyblue1", "yellowgreen","orchid4")) +
xlim(rev(levels(xym$Var1))) +
theme(axis.title = element_blank(),
axis.ticks.y = element_blank(),
legend.position = "bottom",
axis.text.x = element_text(angle = 0,vjust = 0.4)) +
geom_bar(stat = "identity", width = 0.7, position = position_dodge(width = 0.7)) +
geom_text(aes(x = Var1, y = max(value), label = round(value, 2), fill = Var2),
angle = 0, position = position_dodge(width = 0.7), size = 4.2)
p + labs(fill = "")
Run Code Online (Sandbox Code Playgroud)
然后,我添加了以下代码。您可以point
在 stat_summary 中添加更改 geom 的点。对于标签,我选择从ggplot_build()
一个名为foo
. (我认为还有其他方法可以做同样的工作。)使用foo
,我最后添加了注释。
p2 <- p +
stat_summary(fun.y = mean, color = "red", geom = "line", aes(group = 1)) +
stat_summary(fun.y = mean, color = "black", geom ="point", aes(group = 1), size = 5,
show.legend = FALSE)
# This is the data for your dots in the graph
foo <- as.data.frame(ggplot_build(p2)$data[[4]])
p2 +
annotate("text", x = foo$x, y = foo$y + 0.5, color = "black", label = foo$y)
Run Code Online (Sandbox Code Playgroud)