如何为 R 中使用百分比而不是计数作为 y 轴的数据框创建条形图?
Posted
技术标签:
【中文标题】如何为 R 中使用百分比而不是计数作为 y 轴的数据框创建条形图?【英文标题】:How do you create a bar graph for a data frame in R that uses percentages as the y-axis instead of a count? 【发布时间】:2015-03-24 01:32:51 【问题描述】:如果我有这样的数据(但更大):
ID Rating
12 Good
12 Good
16 Good
16 Bad
16 Very Bad
34 Very Good
38 Very Bad
52 Bad
我需要做什么才能使绘图显示每种类型的计数百分比。基本上,对于每种类型的评分,图表应该看起来像 x 轴上的 4 个条形图,y 轴应该是评分出现时间的百分比。例如,上面的数据框将有 4 个条形图,其中非常差和差为 25%,好为 37.5%,非常好为 12.5%。我真的更希望在 ggplot2 中得到答案,但是,因为我根本找不到这个,所以 R 中的任何东西都可以工作。
【问题讨论】:
【参考方案1】:这是我找到的最佳答案:
# create data
data <- data.frame(ID = as.factor(c(12,12,16,16,16,34,38,52)),
Rating = c("Good","Good","Good","Bad","Very Bad","Very Good","Very Bad","Bad"))
# get summary table of Rating
t <- table(data$Rating)
# get percentage list
percent <- as.vector(t)/nrow(data)
# plot
library(ggplot2)
ggplot(data = data,aes(x=Rating)) +
geom_bar(aes(y = (..count..)/sum(..count..))) +
ylab("Percentage") +
ylim(0,0.4)
【讨论】:
【参考方案2】:library(ggplot2)
# create some data
DT <- data.frame(ID=1:10,Rating=sample(c("Very Good","Good","Bad","Very Bad"),20,replace=TRUE))
ggplot(DT, aes(factor(Rating))) + geom_bar()
参考:ggplot2 docs
【讨论】:
【参考方案3】:用于以barplots
为基础显示比例,实际比例在条形上方显示为文本:
tmp.table <- prop.table(table(dat$Rating))
with(dat, barplot(tmp.table, xlab= "Rating", ylab="proportion", ylim=c(0,.40)))
text(x = c(0.75, 2, 3.1, 4.25), y = tmp.table + .01, labels=paste(tmp.table*100,"%"))
结果
数据
dat <- read.csv(text="Rating
Good
Good
Good
Bad
Very Bad
Very Good
Very Bad
Bad")
【讨论】:
以上是关于如何为 R 中使用百分比而不是计数作为 y 轴的数据框创建条形图?的主要内容,如果未能解决你的问题,请参考以下文章