2016-02-28 344 views
-3

我正在嘗試用ggplot2繪製餅圖。我的代碼如下所示。在餅圖上顯示百分比值

df <- data.frame(
    variable = c("australia","hungary","germany","france","canada"), 
    value = c(632,20,491,991,20) 
) 
ggplot(df, aes(x = "", y = value, fill = variable)) + 
    geom_bar(width = 1, stat = "identity") + 
    scale_fill_manual(values = c("red", "yellow","blue", "green", "cyan")) + 
    coord_polar(theta = "y") + 
    labs(title = "pie chart") 

我想顯示百分比值。我怎樣才能做到這一點?

+1

那你試試?爲什麼它不起作用? (有人可能已經告訴過你,但如果還沒有發生,餅圖不是顯示數據的最佳方式,你可以考慮一個條形圖) – Heroka

+0

今天早些時候,我指出[上面的第一個鏈接] (http://stackoverflow.com/questions/16184188/ggplot-facet-piechart-placing-text-in-the-middle-of-pie-chart-slices)。請仔細研究[第一個答案](http://stackoverflow.com/a/22804400/2204410)。它對如何做到這一點給出了詳細的解釋。 – Jaap

+0

@Heroka我的努力已經在問題中顯示爲代碼。我的代碼工作正常。但我需要顯示該圖的百分比。在沒有閱讀問題的情況下寫評論並不好。 – bhl

回答

6

嘗試

df <- data.frame(
    variable = c("australia","hungary","germany","france","canada"), 
    value = c(632,20,491,991,20) 
) 
library(ggplot2) 
ggplot(transform(transform(df, value=value/sum(value)), labPos=cumsum(value)-value/2), 
     aes(x="", y = value, fill = variable)) + 
    geom_bar(width = 1, stat = "identity") + 
    scale_fill_manual(values = c("red", "yellow","blue", "green", "cyan")) + 
    coord_polar(theta = "y") + 
    labs(title = "pie chart") + 
    geom_text(aes(y=labPos, label=scales::percent(value))) 
+0

謝謝你的回答。是否可以刪除x和y軸標籤?我還需要增加百分比值的字體大小。 – bhl

+1

@bhl在回答問題之前,請先搜索答案。所有你的問題已經在SO上多次回答。 – Henrik

+0

@bhl#1您可以添加'+ theme(axis.title = element_blank())'或'+ labs(x =「」,y =「」)'或'+ xlab(「」)''。 #2要增加大小,例如使用'+ geom_text(aes(y = labPos,label = scales :: percent(value)),size = 12)'。 – lukeA