如何在百分比条形图上方添加百分比或计数标签? [英] How to add percentage or count labels above percentage bar plot?
问题描述
使用 ggplot2 1.0.0
,我按照以下帖子中的说明找出如何绘制跨因素的百分比条形图:
.不像以前那样调用 stat_bin
来装箱数据,它现在调用 stat_count
来计算每个位置的观测值.stat_count
返回 prop
作为该位置计数的比例而不是 密度
.
下面的代码已经过修改,以适用于这个新版本的 ggplot2
.我已经包含了两个版本,这两个版本都将条形的高度显示为计数的百分比.第一个将条形上方计数的比例显示为百分比,而第二个显示条形上方的计数.我还为 y 轴和图例添加了标签.
库(ggplot2)图书馆(秤)## 将条形高度显示为百分比,百分比高于条形#ggplot(test, aes(x= test2, group=test1)) +geom_bar(aes(y = ..prop.., fill = factor(..x..)), stat="count") +geom_text(aes(label = scales::percent(..prop..),y= ..prop.. ), stat= "count", vjust = -.5) +实验室(y =百分比",填充=测试2")+facet_grid(~test1) +scale_y_continuous(标签=百分比)## 将条形高度显示为百分比,并在条形上方计数#ggplot(test, aes(x= test2, group=test1)) +geom_bar(aes(y = ..prop.., fill = factor(..x..)), stat="count") +geom_text(aes(label = ..count.., y= ..prop..), stat= "count", vjust = -.5) +实验室(y =百分比",填充=测试2")+facet_grid(~test1) +scale_y_continuous(标签=百分比)
第一个版本的情节如下所示.
Using ggplot2 1.0.0
, I followed the instructions in below post to figure out how to plot percentage bar plots across factors:
Sum percentages for each facet - respect "fill"
test <- data.frame(
test1 = sample(letters[1:2], 100, replace = TRUE),
test2 = sample(letters[3:8], 100, replace = TRUE)
)
library(ggplot2)
library(scales)
ggplot(test, aes(x= test2, group = test1)) +
geom_bar(aes(y = ..density.., fill = factor(..x..))) +
facet_grid(~test1) +
scale_y_continuous(labels=percent)
However, I cannot seem to get a label for either the total count or the percentage above each of the bar plots when using geom_text
.
What is the correct addition to the above code that also preserves the percentage y-axis?
Staying within ggplot, you might try
ggplot(test, aes(x= test2, group=test1)) +
geom_bar(aes(y = ..density.., fill = factor(..x..))) +
geom_text(aes( label = format(100*..density.., digits=2, drop0trailing=TRUE),
y= ..density.. ), stat= "bin", vjust = -.5) +
facet_grid(~test1) +
scale_y_continuous(labels=percent)
For counts, change ..density.. to ..count.. in geom_bar and geom_text
UPDATE for ggplot 2.x
ggplot2 2.0
made many changes to ggplot
including one that broke the original version of this code when it changed the default stat
function used by geom_bar
ggplot 2.0.0. Instead of calling stat_bin
, as before, to bin the data, it now calls stat_count
to count observations at each location. stat_count
returns prop
as the proportion of the counts at that location rather than density
.
The code below has been modified to work with this new release of ggplot2
. I've included two versions, both of which show the height of the bars as a percentage of counts. The first displays the proportion of the count above the bar as a percent while the second shows the count above the bar. I've also added labels for the y axis and legend.
library(ggplot2)
library(scales)
#
# Displays bar heights as percents with percentages above bars
#
ggplot(test, aes(x= test2, group=test1)) +
geom_bar(aes(y = ..prop.., fill = factor(..x..)), stat="count") +
geom_text(aes( label = scales::percent(..prop..),
y= ..prop.. ), stat= "count", vjust = -.5) +
labs(y = "Percent", fill="test2") +
facet_grid(~test1) +
scale_y_continuous(labels=percent)
#
# Displays bar heights as percents with counts above bars
#
ggplot(test, aes(x= test2, group=test1)) +
geom_bar(aes(y = ..prop.., fill = factor(..x..)), stat="count") +
geom_text(aes(label = ..count.., y= ..prop..), stat= "count", vjust = -.5) +
labs(y = "Percent", fill="test2") +
facet_grid(~test1) +
scale_y_continuous(labels=percent)
The plot from the first version is shown below.
这篇关于如何在百分比条形图上方添加百分比或计数标签?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!