我的数据看起来像this:
ENSG00000211521 MIR665 x 89
....
ENSG00000207793 MIR432 y 50
....
我想做的是制作条形图和 在每个栏上添加“人口百分比”。 例如,值为“y”的值为100, 这是百分比45.6(132/289)这是因为 一百个和总数中有132个 人口为289 (每个“x”和“y”)。
最后,我想要一个看起来大致如下的情节:
但是我坚持使用以下代码。这是正确的方法吗?
library(ggplot2)
dat.m <- read.delim("http://dpaste.com/1269939/plain/",sep="")
colnames(dat.m) <- c("ensg","mirna_hgc","variable","value")
qplot(value,data=dat.m, geom="bar", binwidth=1, origin=-0.05, xlim=c(50,100),ylim=c(0,75), facets=variable~.,main="")+
xlab("Value")+
ylab("Frequency")+
theme(legend.position="none")
更新:计算百分比
使用此代码可以获得上图中的百分比。 但不知怎的,我找不到将它们包含在qplot中的方法:
dat.m <- read.delim("http://dpaste.com/1269939/plain/",sep="")
colnames(dat.m) <- c("ensg","mirna_hgc","variable","value")
# the following steps can be applied for "x"
y <- subset(dat.m,dat.m$variable=="y")
y.df <- data.frame(table(y$value))
y.df$percentage <- ((y.df$Freq)/sum(y.df$Freq) * 100)
y.df
答案 0 :(得分:2)
你可以试试这个
qplot(value,data=dat.m, geom="bar", binwidth=1, origin=-0.05, xlim=c(50,100),ylim=c(0,75), facets=variable~.,main="")+
xlab("Value")+
ylab("Frequency")+
theme(legend.position="none") +
stat_bin(aes(label = sprintf("%.02f %%", ..count../sum(..count..)*100)),
geom="text")
有些问题:
Rounding % Labels on bar chart in ggplot2
ggplot: showing % instead of counts in charts of categorical variables