使用 ggplot2 将 R 中的值居中

Centering values in R with ggplot2

我正在尝试将此答案应用到我的数据集,但是 - 作为初学者,它根本不适合我。

这里是示例集和示例代码:

d <- data.frame(Variant = sample(c("iedere","elke"),size = 50,replace = TRUE),
        Region = sample(c("VL","NL"),size = 50,replace = TRUE),
        PrecededByPrep = sample(c("1","0"),size = 50,replace = TRUE),
        Person = sample(c("person","no person"),size = 50,replace = TRUE),
        Time = sample(c("time","no time"),size = 50,replace = TRUE))

    qplot(factor(Variant), data=d, geom="bar", fill=Variant) +
      theme_bw() +
      xlab("") +
      ylab("Frequencies") + 
      geom_text(aes(label = factor(Variant), y = 5), size = 3)

这是一个简单的条形图,只有两个元素(因此条形图应显示 "iedere" 和 "elke" 的频率)。我尝试添加 geom_text 一个我认为至少会显示出现次数的值,但这不起作用。相反,它显示的是标签,而不是值。

我还想将其应用于堆积图 分组堆积图 - 如图 所示。我假设所有三个图表的方法都相同,但看到我什至无法让第一个图表使用提供的代码,我没有尝试其他两个图表。非常感谢一些指导和帮助。

您需要为标签创建辅助数据框。我还重组了绘图代码,因为你最终想用它做更多的事情,qplot 实际上只适用于 "quick" 绘图或那些来自需要快速映射的基础绘图的绘图:

d_labs <- data.frame(table(d$Variant))

gg <- ggplot(d, aes(x=Variant))
gg <- gg + geom_bar(aes(fill=Variant))
gg <- gg + geom_text(data=d_labs, aes(x=Var1, label=Freq), y=5, size=3)
gg <- gg + theme_bw()
gg <- gg + labs(x=NULL, y="Frequencies")
gg

通过这种方式,您可以方式更好地控制 geom_text geom。

编辑

您可以将垂直位置映射到 Freq 审美:

gg <- gg + geom_text(data=d_labs, aes(x=Var1, label=Freq, y=Freq/2), size=3)