R 用于设置不同标记的geom_文本的位置参数

R 用于设置不同标记的geom_文本的位置参数,r,ggplot2,geom-text,R,Ggplot2,Geom Text,我想在每个堆叠的酒吧里放三个标签。我希望它位于每个条的顶部,表示每个治疗变量(x轴)的观察总数。其他两个标签,我希望它们显示每个性别的观察数,在每个治疗变量内都是每个性别选项的中间。 我的geom_文本代码有问题,因为我不知道应该尝试什么位置。我输入了不同的选项,但当我输入时,我的图形会像这样扭曲 这是我正在使用的代码 Data1 %>% count(Treatment, Gender) %>% ggplot(aes(Treatment, n))+ geom_co

我想在每个堆叠的酒吧里放三个标签。我希望它位于每个条的顶部,表示每个治疗变量(x轴)的观察总数。其他两个标签,我希望它们显示每个性别的观察数,在每个治疗变量内都是每个性别选项的中间。

我的geom_文本代码有问题,因为我不知道应该尝试什么位置。我输入了不同的选项,但当我输入时,我的图形会像这样扭曲

这是我正在使用的代码

Data1 %>% 
  count(Treatment, Gender) %>% 
  ggplot(aes(Treatment, n))+ 
  geom_col(aes(fill = Gender), position = "fill")+
  ggtitle("Gender")+
  ylab("Fraction")+
  theme(axis.text.x = element_text(angle = 90, vjust=0.3, hjust=1))+
  scale_fill_manual("Gender", 
                    values = c("Female" = "pink", "Male" = "light blue",
                               "Other"="coral", "Prefer not to answer"="violet"))+
  geom_text(aes(label=n), position=position_stack(vjust=0.5))

如果我正确阅读了其他帖子,position_stack应该将数字放在每个条内。

如果COL是用
position=“fill”
绘制的,那么
geom_text
必须调用相同的
position_fill

在本例中,我将使用内置数据集的子集
mtcars
,在下面进行转换

library(ggplot2)
library(dplyr)

Data1 %>% 
  count(Treatment, Gender) %>%
  ggplot(aes(x = Treatment, y = n, fill = Gender)) + 
  geom_col(position = "fill") +
  ggtitle("Gender") +
  ylab("Fraction") +
  theme(axis.text.x = element_text(angle = 90, vjust=0.3, hjust=1)) +
  scale_fill_manual("Gender", 
                    values = c("Female" = "pink", "Male" = "light blue",
                               "Other"="coral", "Prefer not to answer"="violet")) +
  geom_text(aes(label = n), position = position_fill(vjust=0.5))

为了将条形图总计放在它们的顶部,以下代码还计算每个
治疗的总计,并仅保留每组
治疗的第一个总计,将
NA
分配给
SumN
的其他元素

Data1 %>% 
  count(Treatment, Gender) %>%
  group_by(Treatment) %>% 
  mutate(SumN = sum(n),
         SumN = c(SumN[1], rep(NA, length(SumN) - 1))) %>%
  ungroup() %>%
  ggplot(aes(x = Treatment, y = n, fill = Gender)) + 
  geom_col(position = "fill") +
  ggtitle("Gender") +
  ylab("Fraction") +
  theme(axis.text.x = element_text(angle = 90, vjust=0.3, hjust=1)) +
  scale_fill_manual("Gender", 
                    values = c("Female" = "pink", "Male" = "light blue",
                               "Other"="coral", "Prefer not to answer"="violet")) +
  geom_text(aes(label = n), position = position_fill(vjust=0.5)) +
  geom_text(aes(y = 1.1, label = SumN), position = position_fill(vjust = 1.2))

数据示例。

Data1 <- mtcars[mtcars$carb %in% 1:4, c("cyl", "carb")]
names(Data1) <- c("Treatment", "Gender")
Data1$Treatment <- factor(Data1$Treatment)
Data1$Gender <- factor(Data1$Gender, 
                       labels = c("Female", "Male", "Other", "Prefer not to answer"))

geom\u text中的
Data1
使用
position\u fill
。我想知道是否有办法在每个文本顶部设置观察次数标签bar@AlejandroRuiz完成后,请参见编辑。我还通过添加
处理更改了数据创建代码。我运行了代码,但出现了:警告消息:删除了9行包含缺少值的行(geom_text)。@AlejandroRuiz这是正常的,只要图形正确,如果我是你,我就不会担心。