Plotting a bivariate to multiple factors in R

后端 未结 3 2150
终归单人心
终归单人心 2021-01-06 12:14

First of all, I\'m still a beginner. I\'m trying to interpret and draw a stack bar plot with R. I already took a look at a number of answers but some were not specific to my

3条回答
  •  -上瘾入骨i
    2021-01-06 13:01

    Here is my proposition for a solution with function barplot of base R :

    1. calculate the counts

    l_count_df<-lapply(colnames(t)[-1],function(nomcol){table(t$Variant,t[,nomcol])})
    count_df<-l_count_df[[1]]
    for (i in 2:length(l_count_df)){
        count_df<-cbind(count_df,l_count_df[[i]])
    }
    

    2. draw the barplot without axis names, saving the bar coordinates

    par(las=1,col.axis="#404040",mar=c(5,4.5,4,2),mgp=c(3.5,1,0))
    bp<-barplot(count_df,width=1.2,space=rep(c(1,0.3),4),col=c("paleturquoise3", "palegreen3"),border="#404040", axisname=F, ylab="Frequency",
                legend=row.names(count_df),ylim=c(0,max(colSums(count_df))*1.2))
    

    3. label the bars

    mtext(side=1,line=0.8,at=bp,text=colnames(count_df))
    mtext(side=1,line=2,at=(bp[seq(1,8,by=2)]+bp[seq(2,8,by=2)])/2,text=colnames(t)[-1],font=2)
    

    4. add values inside the bars

    for(i in 1:ncol(count_df)){
        val_elke<-count_df[1,i]
        val_iedere<-count_df[2,i]
        text(bp[i],val_elke/2,val_elke)
        text(bp[i],val_elke+val_iedere/2,val_iedere)
    }
    

    Here is what I get (with my random data) :

    enter image description here

提交回复
热议问题