簡體   English   中英

R-ggplot2-條形圖-系列獲得不正確的值標簽

[英]R - ggplot2 - bar chart - series get incorrect value labels

我試圖繪制一個基本的堆棧條形圖,以顯示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) 

新劇情:

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)

在此處輸入圖片說明

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)

在此處輸入圖片說明

最后,如果要切換磁貼:

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)

在此處輸入圖片說明

注意,對於這第三張圖,我在美學調用中添加了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)

在此處輸入圖片說明

條形圖的主要區別是: fill=rev(factor(T)注意,我使用rev()命令反轉了因子水平,對於文本,請注意,我從geom_text()刪除了y=Counter並更改了labelrev(factor(Counter)) 。此外,對於第二個圖,我手動設置了圖例項。

UPDATE

按照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")

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM