【问题标题】:How can I change the Y-axis figures into percentages in a barplot?如何将 Y 轴数字更改为条形图中的百分比?
【发布时间】:2015-02-10 13:59:38
【问题描述】:

我们如何将 y 轴更改为如图所示的百分比?我可以更改 y 轴范围,但无法达到百分比。

【问题讨论】:

    标签: r ggplot2 bar-chart


    【解决方案1】:

    用途:

    + scale_y_continuous(labels = scales::percent)
    

    或者,指定百分比的格式参数:

    + scale_y_continuous(labels = scales::percent_format(accuracy = 1))
    

    (命令labels = percent自ggplot2 2.2.1版本起已过时)

    【讨论】:

    • 我喜欢你不必为此输入library(scales)
    • scales::percent(accuracy = 1) 不起作用的原因是*_format() 版本创建了一个函数,而不是......无论percent() 单独创建什么,对吗?
    【解决方案2】:

    原则上,您可以将任何重新格式化函数传递给labels 参数:

    + scale_y_continuous(labels = function(x) paste0(x*100, "%")) # Multiply by 100 & add %  
    

    或者

    + scale_y_continuous(labels = function(x) paste0(x, "%")) # Add percent sign 
    

    可重现的例子:

    library(ggplot2)
    df = data.frame(x=seq(0,1,0.1), y=seq(0,1,0.1))
    
    ggplot(df, aes(x,y)) + 
      geom_point() +
      scale_y_continuous(labels = function(x) paste0(x*100, "%"))
    

    【讨论】:

    • +1 表示没有外部依赖。我知道,由于 Hadley 是 ggplot2 和 scales 的作者,所以这并不重要——但这个解决方案仍然值得赞赏。
    【解决方案3】:

    ggplot2scales 包可以做到这一点:

    y <- c(12, 20)/100
    x <- c(1, 2)
    
    library(ggplot2)
    library(scales)
    myplot <- qplot(as.factor(x), y, geom="bar")
    myplot + scale_y_continuous(labels=percent)
    

    stat() 选项似乎已被取消,导致出现错误消息。试试这个:

    library(scales)
    
    myplot <- ggplot(mtcars, aes(factor(cyl))) + 
              geom_bar(aes(y = (..count..)/sum(..count..))) + 
              scale_y_continuous(labels=percent)
    
    myplot
    

    【讨论】:

      【解决方案4】:

      从上面的@Deena 中借用,标签的函数修改比您想象的更通用。例如,我有一个 ggplot,其中计数变量的分母是 140。我使用了她的示例:

      scale_y_continuous(labels = function(x) paste0(round(x/140*100,1), "%"), breaks = seq(0, 140, 35))
      

      这让我可以在 140 分母上得到我的百分比,然后以 25% 的增量打破比例,而不是默认的奇怪数字。这里的关键是比例中断仍然由原始计数设置,而不是由您的百分比设置。因此,间隔必须从零到分母值,“breaks”中的第三个参数是分母除以您想要的标签间隔(例如 140 * 0.25 = 35)。

      【讨论】:

        猜你喜欢
        • 2018-12-15
        • 1970-01-01
        • 2021-08-03
        • 1970-01-01
        • 2018-10-05
        • 1970-01-01
        • 2017-08-27
        • 2016-07-07
        • 1970-01-01
        相关资源
        最近更新 更多