R ggplot2:条形内的标签,没有堆叠的geom_bar [英] R ggplot2: labels inside bars, no stacked geom_bar

查看:91
本文介绍了R ggplot2:条形内的标签,没有堆叠的geom_bar的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下数据集:

data <- structure(list(Q14 = c("< 5 people", "> 11 people", "6-10 people", 
NA), count = c(148L, 13L, 34L, 21L), var = c("Team Size", "Team Size", 
"Team Size", "Team Size")), row.names = c(NA, -4L), class = c("tbl_df", 
"tbl", "data.frame"))

然后按如下所示绘制我的geom_bar:

And I plot my geom_bar as follows:

library(ggplot2)
library(wesanderson)

ggplot(data) +
  geom_bar( aes(x = var, y = count, fill = Q14), stat = "identity", position = "fill") +
  coord_flip() + 
  theme(legend.position = "none", 
        axis.title.x=element_blank(), axis.title.y=element_blank()) +
  scale_fill_manual(values = wes_palette("Zissou1", 3, type = "continuous"))

我想按如下所示在栏中打印标签.注意:我的编辑技巧很糟糕,我当然希望标签对齐,并且它们也可以逆时针旋转.

I would like to print the labels inside the bar, as follows. Note: my editing skills suck, I'd like labels to be aligned of course, and they can be rotated CCW as well.

另一种选择是获取以下内容,我也喜欢:

Another option is to obtain something as follows, which I also like:

推荐答案

一种选择是使用 geom_text :

ggplot(data, aes(x = var, y = count, fill = Q14, label = Q14)) +
  geom_bar(stat = "identity", position = "fill", ) +
  geom_text(position = position_fill(vjust = 0.5), size = 3) +
  coord_flip() + 
  theme(legend.position = "none", 
        axis.title.x=element_blank(),
        axis.title.y=element_blank()) +
  scale_fill_manual(values = wes_palette("Zissou1", 3, type = "continuous"))

另一种选择是使用 ggrepel 中的 geom_label_repel :

Another option is to use geom_label_repel from ggrepel:

library(ggrepel)
ggplot(data, aes(x = var, y = count, fill = Q14, label = Q14)) +
  geom_bar(stat = "identity", position = "fill", ) +
  geom_label_repel(position = position_fill(vjust = 0.5),
                   direction = "y",
                   point.padding = 1,
                   segment.size = 0.2, 
                   size = 3,
                   seed = 3) +
  coord_flip() + 
  theme(legend.position = "none", 
        axis.title.x=element_blank(),
        axis.title.y=element_blank()) +
  scale_fill_manual(values = wes_palette("Zissou1", 3, type = "continuous"))

请注意, seed 参数设置每个标签的前进方向的随机过程.如果您不喜欢我喜欢的电话,请选择其他号码.

Note that the seed parameter sets the random process of which direction each label goes. If you don't like the same one I do, pick a different number.

这篇关于R ggplot2:条形内的标签,没有堆叠的geom_bar的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆