2016-02-28 340 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