我最近正在使用一些输出,我似乎无法用信息绘制它。输出如下所示:
180,A,71
180,C,61
180,G,68
180,U,78
182,A,70
182,C,34
182,G,123
182,U,51
我想绘制这些数据,因此我在x轴上绘制第一列,并在y轴上绘制根据四种不同类型(第2列)及其频率(第3列)填充的条形图。因此,y轴上的所有类型的频率都是第一列的一个值,但该条形将根据类型的大小进行划分。
我希望问题很明确,谢谢你的帮助。
答案 0 :(得分:1)
这是怎么回事?
df <- data.frame(X=rep(c(180,182), each=4), Group=rep(c("A","C","G","U"),2),
Y=c(71,61,68,78,70,34,123,51))
# Calculating percentages (just using base)
groupSum <- tapply(df$X, df$Group, sum)
df$Label <- paste0(round(100 * df$Y / groupSum[df$Group], 1), "%")
# Go for the plot
library(ggplot2)
ggplot(data=df, aes(x=X, y=Y,fill=Group)) +
geom_bar(position="dodge", stat="identity") +
scale_x_continuous(breaks=unique(df$X))
这就是@Haroka的情节(现在根据请求添加了百分比 - 也是see here):
ggplot(data=df, aes(x=X, y=Y,fill=Group)) +
geom_bar(position="stack", stat="identity") +
scale_x_continuous(breaks=unique(df$X)) +
geom_text(aes(label = Label), size=12, hjust=0.5, vjust=3, position="stack")