2017-03-03 58 views
0

我有一個DF(命名爲:cant_masivos_trim)如下:ggplot - 讓餅圖

  Descripcion Freq 
    Cargos Jubilaciones 2185 
     Faltantes de Caja 470 
     ATM Diferencias 201 
    Previsiones Legales 34 
    Gastos Corresponsalía 22 
      Multas SICORE 19 
       Sumarios 17 
      ATM Fraudes 10 
      Multas ANSeS 7 
      Multas AFIP 5 

我想創建一個餅圖與GGPLOT2,和我有一個標籤一個問題,因爲你可以看到圖片。

enter image description here

我不知道爲什麼標籤不是在正確的位置,我無法弄清楚。

的代碼我使用:

pmas <- ggplot(cant_masivos_trim, aes(x=1, y=Freq, fill=Descripcion)) + 
     geom_bar(stat="identity") + 
     ggtitle(paste("Cantidad de Reportes - Carga Masiva")) 
pmas <- pmas + coord_polar(theta='y') 
pmas <- ggplot(cant_masivos_trim, aes(x=1, Freq, fill=Descripcion)) + 
     ggtitle(paste("Cantidad de Reportes - Carga Masiva")) + 
     coord_polar(theta='y') 
pmas <- pmas + geom_bar(stat="identity", color='black') + guides(fill=guide_legend(override.aes=list(colour=NA))) 
pmas <- pmas + theme(axis.ticks=element_blank(), # the axis ticks 
      axis.title=element_blank(), # the axis labels 
      axis.text.y=element_blank()) # the 0.75, 1.00, 1.25 labels. 
y.breaks <- cumsum(cant_masivos_trim$Freq) - cant_masivos_trim$Freq/2 
pmas <- pmas + 
    # prettiness: make the labels black 
    theme(axis.text.x=element_text(color='black')) + 
    scale_y_continuous(
     breaks=y.breaks, # where to place the labels 
     labels= (paste(cant_masivos_trim$Freq, percent(cant_masivos_trim$Freq/sum(cant_masivos_trim$Freq)), sep='\n'))) # the labels 

誰能幫助我?謝謝!

+1

http://www.businessinsider.com/pie-charts-are-the-worst-2013-6 – alistaire

+0

http://stat405.had.co.nz/lectures/20 - 有效-vis.pdf#頁= 42 –

回答

0

這與默認情況下繪製餡餅切片的順序有關。通過查看條形圖(coord_polar之前)可以很容易地看到發生了什麼。根據您的Descripcion因子的等級順序,ggplot2條形圖從上到下進行繪製。

要計算間隔,您需要在計算累積頻率之前按照Descripcion的順序排列數據集。要匹配默認的ggplot2訂單,您可以通過變量的反向進行訂購。

cant_masivos_trim = cant_masivos_trim[rev(order(cant_masivos_trim$Descripcion)), ] 

一旦完成,根據累計頻率計算中斷並像以前一樣居中。

y.breaks = cumsum(cant_masivos_trim$Freq) - cant_masivos_trim$Freq/2 

ggplot(cant_masivos_trim, aes(x =1, y = Freq, fill = Descripcion)) + 
    geom_bar(stat="identity") + 
    coord_polar(theta = "y") + 
    scale_y_continuous(breaks = y.breaks, # where to place the labels 
     labels = (paste(cant_masivos_trim$Freq, 
        scales::percent(cant_masivos_trim$Freq/sum(cant_masivos_trim$Freq)), sep='\n'))) + 
    theme(legend.position = "none", 
     axis.ticks=element_blank(), 
     axis.title=element_blank(), 
     axis.text.y=element_blank()) 

enter image description here