[英]horizontal bar plot with ggplot2
I'am trying doing a bar chart from this data frame with ggplot2 to compare data from Uniprot and macki columns. 我正在尝试使用ggplot2从此数据框中绘制条形图,以比较Uniprot和macki列中的数据。
Famille Uniprot Macki
SN_02 26 7
SN_03 21 22
SN_04 16 7
SN_05 4 0
SN_09 10 0
SN_10 5 0
SN_17 6 0
SN_19 13 4
SN_20 3 1
SN_31 2 0
SN_32 5 3
SN_33 3 0
SN_34 1 0
SN_37 3 0
This is my R code: 这是我的R代码:
bar <- c(26, 21, 16,4,10,5,6,13,3,2,5,3,1,3,7,22,7,0,0,0,0,4,1,0,3,0,0,0)
lab <- c("SN_02", "SN_03", "SN_04", "SN_05", "SN_09", "SN_10", "SN_17","SN_19", "SN_20", "SN_31", "SN_32", "SN_33", "SN_34", "SN_37", "SN_02", "SN_03", "SN_04", "SN_05", "SN_09", "SN_10", "SN_17", "SN_19", "SN_20", "SN_31", "SN_32", "SN_33", "SN_34", "SN_37")
pct <- round(bar/sum(bar)*100)
lab <- paste(lab,"%", sep = "")
lab <- paste(lab, pct)
lab0 <- c("SN_02", "SN_03", "SN_04", "SN_05", "SN_09", "SN_10", "SN_17", "SN_19", "SN_20", "SN_31", "SN_32", "SN_33", "SN_34", "SN_37", "SN_02", "SN_03", "SN_04", "SN_05", "SN_09", "SN_10", "SN_17", "SN_19", "SN_20", "SN_31", "SN_32", "SN_33", "SN_34", "SN_37")
nlab <- length(lab)
type <- rep("Uniprot:MACKI", each=nlab/2)
library(ggplot2)
theme_set(theme_bw())
dd <- data.frame(lab0, type, bar, pct)
dd$lab0 <- reorder(dd$lab0,-dd$bar)
ggplot(dd,aes(x=lab0,y=bar,fill=lab0))+geom_bar(aes(alpha=factor(bar)), stat = "identity",
position=position_dodge(width=1))+scale_alpha_discrete(range=c(0.5,1.0))+
geom_text(aes(label=paste0(pct,"%"),group=interaction(lab0,type)),hjust=-0.5, position=position_dodge(width=1))
+ coord_flip()+expand_limits(y=20)+labs(x="",y="total")
And this is the plot i've got this horizontal bar plot 这是我有这个水平条形图的情节
Can you help me debug my code? 您能帮我调试我的代码吗? Thanks
谢谢
adding object to ggplot2 is through +
, which has to be in the same line. 通过
+
将对象添加到ggplot2中,必须在同一行中。 Take a look at one line before last - you have to put +
there. 看一下最后一行之前的一行-您必须在该处加上
+
。 After modification code works 修改后的代码有效
bar <- c(26, 21, 16,4,10,5,6,13,3,2,5,3,1,3,7,22,7,0,0,0,0,4,1,0,3,0,0,0)
lab <- c("SN_02", "SN_03", "SN_04", "SN_05", "SN_09", "SN_10", "SN_17","SN_19", "SN_20", "SN_31", "SN_32", "SN_33", "SN_34", "SN_37", "SN_02", "SN_03", "SN_04", "SN_05", "SN_09", "SN_10", "SN_17", "SN_19", "SN_20", "SN_31", "SN_32", "SN_33", "SN_34", "SN_37")
pct <- round(bar/sum(bar)*100)
lab <- paste(lab,"%", sep = "")
lab <- paste(lab, pct)
lab0 <- c("SN_02", "SN_03", "SN_04", "SN_05", "SN_09", "SN_10", "SN_17", "SN_19", "SN_20", "SN_31", "SN_32", "SN_33", "SN_34", "SN_37", "SN_02", "SN_03", "SN_04", "SN_05", "SN_09", "SN_10", "SN_17", "SN_19", "SN_20", "SN_31", "SN_32", "SN_33", "SN_34", "SN_37")
nlab <- length(lab)
type <- rep("Uniprot:MACKI", each=nlab/2)
library(ggplot2)
theme_set(theme_bw())
dd <- data.frame(lab0, type, bar, pct)
dd$lab0 <- reorder(dd$lab0,-dd$bar)
ggplot(dd,aes(x=lab0,y=bar,fill=lab0))+
geom_bar( aes(alpha=factor(bar)) , stat = "identity", position = position_dodge(width=1) ) +
scale_alpha_discrete( range=c(0.5,1.0) )+
geom_text(
aes( label=paste0(pct,"%") , group=interaction(lab0,type) ),
hjust = -0.5,
position = position_dodge(width=1)) +
coord_flip()+
expand_limits(y = 20) +
labs(x = "",y = "total")
I advise you also to follow r-code-formatting-guide , which would help you to write code in a proper readable way. 我建议您也遵循r-code-formatting-guide ,它将帮助您以适当的可读方式编写代码。 Good luck!
祝好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.