如何将百分比添加到R中ggplot2中的条形图面?

如何将百分比添加到R中ggplot2中的条形图面?,r,ggplot2,visualization,data-visualization,R,Ggplot2,Visualization,Data Visualization,我想用ggplot2绘制一个图,这样就有条形图显示人们在各种城市/农村环境(方面)中持有的学位(条形)。我做到了 现在我想为每个方面添加具有各种资格的人员的比例。我使用下面的代码得到的是整个人口的百分比 如何更改代码,以便在每个方面内计算百分比 下面是我使用的数据集中1000行的示例: 库(ggplot2) 图书馆(比例尺) #在各个方面按等级划分城市/农村 myplot我认为这是可行的: si <- read.csv('sampledata.csv', sep=' ') myplot &

我想用ggplot2绘制一个图,这样就有条形图显示人们在各种城市/农村环境(方面)中持有的学位(条形)。我做到了

现在我想为每个方面添加具有各种资格的人员的比例。我使用下面的代码得到的是整个人口的百分比

如何更改代码,以便在每个方面内计算百分比

下面是我使用的数据集中1000行的示例:

库(ggplot2)
图书馆(比例尺)
#在各个方面按等级划分城市/农村
myplot我认为这是可行的:

si <- read.csv('sampledata.csv', sep=' ')
myplot <- ggplot(data = si
                 ,aes(DEGREE)
) 
myplot <- myplot + geom_bar()
myplot <- myplot + labs(title = "Degree by Urban/Rural", y = "Percent", x = "DEGREE")
myplot <- myplot +  geom_text(aes(y = ((..count..)/tapply(..count..,..PANEL..,sum)[..PANEL..]), label = scales::percent((..count..)/tapply(..count..,..PANEL..,sum)[..PANEL..])), stat = "count", vjust = -0.25)
myplot <- myplot + facet_wrap(~URBRURAL)
myplot <- myplot + theme(axis.text.x = element_text(angle = 20, hjust = 1))
myplot
我认为这是可行的:

si <- read.csv('sampledata.csv', sep=' ')
myplot <- ggplot(data = si
                 ,aes(DEGREE)
) 
myplot <- myplot + geom_bar()
myplot <- myplot + labs(title = "Degree by Urban/Rural", y = "Percent", x = "DEGREE")
myplot <- myplot +  geom_text(aes(y = ((..count..)/tapply(..count..,..PANEL..,sum)[..PANEL..]), label = scales::percent((..count..)/tapply(..count..,..PANEL..,sum)[..PANEL..])), stat = "count", vjust = -0.25)
myplot <- myplot + facet_wrap(~URBRURAL)
myplot <- myplot + theme(axis.text.x = element_text(angle = 20, hjust = 1))
myplot

在打印数据之前,始终可以变换数据以计算所需内容。我还添加了一些调整(条形图顶部的标签、x轴上的字符串环绕、轴限制和标签)

库(dplyr)
图书馆(GG2)
图书馆(stringr)
绘图数据%
组别(城市、乡村、学位)%>%
计数%>%
变异(百分比=n/总和(n))
ggplot(曲线图数据,aes(x=度,y=百分比))+
几何图形栏(stat=“identity”)+
几何图形文本(aes(标签=百分比),vjust=-0.5)+
实验室(title=“城市/农村的学位”,y=“百分比”,x=“学位”)+
比例连续(标签=百分比,限值=c(0,1))+
比例x离散(标签=函数(x)str_wrap(x,10))+
面_包裹(~u)

在绘制数据之前,您始终可以变换数据以计算所需内容。我还添加了一些调整(条形图顶部的标签、x轴上的字符串环绕、轴限制和标签)

库(dplyr)
图书馆(GG2)
图书馆(stringr)
绘图数据%
组别(城市、乡村、学位)%>%
计数%>%
变异(百分比=n/总和(n))
ggplot(曲线图数据,aes(x=度,y=百分比))+
几何图形栏(stat=“identity”)+
几何图形文本(aes(标签=百分比),vjust=-0.5)+
实验室(title=“城市/农村的学位”,y=“百分比”,x=“学位”)+
比例连续(标签=百分比,限值=c(0,1))+
比例x离散(标签=函数(x)str_wrap(x,10))+
面_包裹(~u)


你能分享样本数据吗?有很多潜在的重复数据,包括,和。您尝试过这些答案中的任何选项吗?我检查了这些答案,但没有帮助。您已重命名y轴,并将比例更改为百分比,但条形图的高度仍为计数。这真的是你的意图吗?你能分享样本数据吗?有很多潜在的重复,包括,和。您尝试过这些答案中的任何选项吗?我检查了这些答案,但没有帮助。您已重命名y轴,并将比例更改为百分比,但条形图的高度仍为计数。这真的是你的意图吗?酒吧的高度与百分比比例不匹配,例如,在科维尔左侧(“城镇或小城市”)的第一个酒吧的标签为15.7%,但酒吧高达45%。实际上y轴标签不是百分比,而是与原始数字一样的实际计数,更新后的帖子显示,条形图上的标签代表百分比。条形图的高度与百分比比例不匹配,例如,kower左侧的第一个条形图(“城镇或小城市”)的标签为15.7%,但条形图高达45%。实际上y轴标签不是百分比,而是实际计数,与原始数字相同,条形图上的标签表示百分比,更新了post.Clean&直截了当的计算解决方案,并改进了图形。但是,您提供的代码仍然在x轴上打印倾斜的标签,并且没有如图所示进行包装。请你加上包装标签的代码好吗?谢谢,杰克<代码>缩放x离散()
创建错误。其读数应为
缩放x_离散()
。不幸的是,我不被允许编辑少于6个字符的内容,所以你能自己纠正打字错误吗?谢谢。现在,打字错误已经被修复了。对于计算和改进的图形来说,它是一个干净而直接的解决方案。但是,您提供的代码仍然在x轴上打印倾斜的标签,并且没有如图所示进行包装。请你加上包装标签的代码好吗?谢谢,杰克<代码>缩放x离散()创建错误。其读数应为
缩放x_离散()
。不幸的是,我不被允许编辑少于6个字符的内容,所以你能自己纠正一下错误吗?谢谢。错误现在已经纠正了
library(dplyr)
as.data.frame(si %>% group_by(URBRURAL, DEGREE) %>% summarise(n=n()))

1  Country village, other type of community Above higher secondary level, other qualification  6
2  Country village, other type of community                        Above lowest qualification 16
3  Country village, other type of community                        Higher secondary completed  9
4  Country village, other type of community                       Lowest formal qualification 31
5  Country village, other type of community                           No formal qualification 20
6  Country village, other type of community                       University degree completed  1
7               Farm or home in the country                        Above lowest qualification  1
8               Farm or home in the country                        Higher secondary completed  1
9               Farm or home in the country                       Lowest formal qualification  5
10              Farm or home in the country                           No formal qualification  1
11              Farm or home in the country                       University degree completed  1
12           Suburb, outskirt of a big city Above higher secondary level, other qualification 45
13           Suburb, outskirt of a big city                        Above lowest qualification 57
14           Suburb, outskirt of a big city                        Higher secondary completed 75
15           Suburb, outskirt of a big city                       Lowest formal qualification 48
16           Suburb, outskirt of a big city                           No formal qualification 23
17           Suburb, outskirt of a big city                       University degree completed 15
18                       Town or small city Above higher secondary level, other qualification 45
library(dplyr)
library(ggplot2)
library(stringr)

plot_data <- df %>% 
  group_by(URBRURAL, DEGREE) %>% 
  tally %>% 
  mutate(percent = n/sum(n))

ggplot(plot_data, aes(x = DEGREE, y = percent)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = percent(percent)), vjust = -0.5) +
  labs(title = "Degree by Urban/Rural", y = "Percent", x = "DEGREE") +
  scale_y_continuous(labels = percent, limits = c(0,1)) +
  scale_x_discrete(labels = function(x) str_wrap(x, 10)) +
  facet_wrap(~URBRURAL)