R - ggplot2 - 条形图 - 系列获取不正确的值标签

时间:2016-08-29 23:12:08

标签: r ggplot2

我正在尝试绘制一个基本的堆栈条形图,以显示n次模拟的接受和拒绝次数。 (一栏)

如何控制哪个系列与相应的值标签一起位于堆栈顶部?

我试过两个版本都没有用过。颜色错误或标签。

版本1

#version 1
T <- c(1,0)
H0_Testing <- c("Accept","Reject")
Counter <- c(100,900)
Label= c("L","L")
barplotdata<- data.frame(H0_Testing,T,Counter,Label)
fill <- c("#E1B378","#5F9EA0")
chartlabels=c("Accepted1","Rejected1")
title="version 1"


#Ploting
ggplot(barplotdata,aes(x=Label,y=Counter,fill=factor(T)))  + geom_bar(stat ="identity",width=.2)+
  geom_text(data=barplotdata, aes(label =Counter, y = Counter, size=4), show_guide = F)+   
  scale_fill_manual(labels=chartlabels, values=fill) +
  theme(legend.title = element_blank()) +
  theme(plot.title = element_text(size = 10), 
        axis.title.x = element_text(face="bold",size = 9), axis.title.y = element_text(face="bold",size = 8),
        axis.text.x = element_text(size=8),axis.text.y = element_text(size=7),legend.text = element_text(size=7.5))+ 
  ggtitle(title) 



第2版​​

#version 2

    T <- c(0,1)
    H0_Testing <- c("Reject","Accept")
    Counter <- c(900,100)
    Label= c("L","L")
    barplotdata<- data.frame(H0_Testing,T,Counter,Label)
    fill <- c("#5F9EA0","#E1B378")
    chartlabels=c("Rejected2","Accepted2")
    title="version 2"

    #Ploting
    ggplot(barplotdata,aes(x=Label,y=Counter,fill=factor(T)))  + geom_bar(stat ="identity",width=.2)+
      geom_text(data=barplotdata, aes(label =Counter, y = Counter, size=4), show_guide = F)+   
      scale_fill_manual(labels=chartlabels, values=fill) +
      theme(legend.title = element_blank()) +
      theme(plot.title = element_text(size = 10), 
            axis.title.x = element_text(face="bold",size = 9), axis.title.y = element_text(face="bold",size = 8),
            axis.text.x = element_text(size=8),axis.text.y = element_text(size=7),legend.text = element_text(size=7.5))+ 
    ggtitle(title) 

1 个答案:

答案 0 :(得分:2)

新剧情:

T <- c(0,1)
H0_Testing <- c("Reject","Accept")
Counter <- c(900,100)
Label= c("L","L")
barplotdata<- data.frame(H0_Testing,T,Counter,Label)
fill <- c("#5F9EA0","#E1B378")
chartlabels=c("Rejected2","Accepted2")
title="version 2"

ggplot(barplotdata,aes(x=Label,y=Counter,fill=rev(factor(Counter))))  + geom_bar(stat ="identity",width=.2)+
  geom_text(data=barplotdata, aes(label =rev(factor(Counter)), size=4), show.legend = F)+   
  scale_fill_manual(labels=chartlabels, values=fill) +
  theme(legend.title = element_blank()) +
  theme(plot.title = element_text(size = 10), 
        axis.title.x = element_text(face="bold",size = 9), axis.title.y = element_text(face="bold",size = 8),
        axis.text.x = element_text(size=8),axis.text.y = element_text(size=7),legend.text = element_text(size=7.5))+ 
  ggtitle(title)

enter image description here

ggplot(barplotdata,aes(x=Label,y=Counter,fill=factor(Counter)))  + geom_bar(stat ="identity",width=.2)+
      geom_text(data=barplotdata, aes(label =rev(factor(Counter)), size=4), show.legend = F)+   
      scale_fill_manual(labels=c("Accepted2","Rejected2"), values=fill) +
      theme(legend.title = element_blank()) +
      theme(plot.title = element_text(size = 10), 
            axis.title.x = element_text(face="bold",size = 9), axis.title.y = element_text(face="bold",size = 8),
            axis.text.x = element_text(size=8),axis.text.y = element_text(size=7),legend.text = element_text(size=7.5))+ 
    ggtitle(title)

enter image description here

最后,如果你想切换瓷砖:

ggplot(barplotdata,aes(x=Label,y=rev(Counter),fill=factor(Counter)))  + geom_bar(stat ="identity",width=.2)+
      geom_text(data=barplotdata, aes(label =rev(factor(Counter)), size=4), show.legend = F)+   
      scale_fill_manual(labels=c("Rejected2","Accepted2"), values=fill) +
      theme(legend.title = element_blank()) +
      theme(plot.title = element_text(size = 10), 
            axis.title.x = element_text(face="bold",size = 9), axis.title.y = element_text(face="bold",size = 8),
            axis.text.x = element_text(size=8),axis.text.y = element_text(size=7),legend.text = element_text(size=7.5))+ 
    ggtitle(title)

enter image description here

注意,对于第三个情节,我在美学呼唤中添加了y=rev(Counter)

而不是(你原来的情节版本2):

    #Ploting
    ggplot(barplotdata,aes(x=Label,y=Counter,fill=factor(T)))  + geom_bar(stat ="identity",width=.2)+
      geom_text(data=barplotdata, aes(label =Counter, y = Counter, size=4), show.legend = F)+   
      scale_fill_manual(labels=chartlabels, values=fill) +
      theme(legend.title = element_blank()) +
      theme(plot.title = element_text(size = 10), 
            axis.title.x = element_text(face="bold",size = 9), axis.title.y = element_text(face="bold",size = 8),
            axis.text.x = element_text(size=8),axis.text.y = element_text(size=7),legend.text = element_text(size=7.5))+ 
    ggtitle(title)

enter image description here

条形图的关键区别是:fill=rev(factor(T) - 我用rev()命令反转因子级别的注意事项。对于文字,请注意我从y=Counter删除了geom_text()并将label值更改为rev(factor(Counter))。此外,对于第二个图,我手动设置图例项。

<强>更新

根据OP在评论中的要求,“我想更改另外两种格式,减少值标签的字体并摆脱x轴下方的T。你知道我怎么做格式化?”

要缩小字体大小,请将size移出美学(您还可以摆脱show.legend=Fshow_guide=F)。要删除轴标签,你需要添加theme(axis.ticks = element_blank(), axis.text.x = element_blank())+ylab("Counter") - 删除字母L和刻度标记,这是我认为你在说T时的意思。ggplot调用中的两个代码都是:

ggplot(barplotdata,aes(x=Label,y=rev(Counter),fill=factor(Counter)))  + geom_bar(stat ="identity",width=.2)+
      geom_text(data=barplotdata, aes(label =rev(factor(Counter))),size=2)+   
      scale_fill_manual(labels=c("Rejected2","Accepted2"), values=fill) +
      theme(legend.title = element_blank()) +
      theme(plot.title = element_text(size = 10), 
            axis.title.x = element_text(face="bold",size = 9), axis.title.y = element_text(face="bold",size = 8),
            axis.text.x = element_text(size=8),axis.text.y = element_text(size=7),legend.text = element_text(size=7.5))+ 
    ggtitle(title)+theme(axis.ticks = element_blank(), axis.text.x = element_blank())+ylab("Counter")

enter image description here

相关问题