如何在ggplot中实现绝对百分比比例?

Posted

技术标签:

【中文标题】如何在ggplot中实现绝对百分比比例?【英文标题】:How to achieve an absolute percentage scale in ggplot? 【发布时间】:2020-03-09 22:54:16 【问题描述】:

我正在尝试使用 gpplot 在堆叠图中绘制正数和负数。根据我在此页面上找到的示例,这可以正常工作。

我的图表的限制是 -1 和 1,但我希望刻度以绝对百分比的形式显示标签,即从左侧的 100% 到中间的 0% 到右侧的 100%。

以下最小示例说明我可以获得百分比刻度标签 (labels = percent) 或绝对刻度 (labels = abs),但我不知道如何组合它们。

提前致谢。

library(tidyverse)
library(scales)

x <- tribble(
  ~response, ~count,
  "a",         -0.2,
  "b",         -0.1,
  "c",          0.5,
  "d",          0.2
)

p <- ggplot() +
  geom_bar(data = x,
           aes(x = "", y = count, fill = response),
           position = "stack",
           stat = "identity") +
  coord_flip()

# Percent scale
p + scale_y_continuous(labels = percent, limits = c(-1, 1), expand = c(0.05, 0))

# Absolute scale
p + scale_y_continuous(labels = abs, limits = c(-1, 1), expand = c(0.05, 0))

由reprex package (v0.3.0) 于 2019 年 11 月 14 日创建

【问题讨论】:

labels = function(x) percent(abs(x)) 之类的东西替换labels = percent 能实现您的目标吗? 这实际上非常有效。非常感谢。比我想象的要容易得多。 【参考方案1】:

答案在 cmets 中:在 scale_y_continuous() 中使用 labels = function(x) percent(abs(x))

【讨论】:

【参考方案2】:

位置从堆叠更改为闪避。这导致在显示不同计数值的同时将变量清晰地分开为零。

p <- ggplot() +
  geom_bar(data = x %>% filter(count < 0),
      aes(x = "", y = count, fill = response),
      position = "dodge",
      stat = "identity") +
  geom_bar(data = x %>% filter(count >= 0),
  aes(x = "", y = count, fill = response),
  position = "dodge", stat = "identity") +
  coord_flip()

# Percent scale
p + scale_y_continuous(labels = percent, limits = c(-1, 1), expand = c(0.05, 0))

# Absolute scale
p + scale_y_continuous(labels = abs, limits = c(-1, 1), expand = c(0.05, 0)) 

输出显示在下面的某处。

很棒的绘图示例。谢谢,

【讨论】:

谢谢,@Gray。不过,我并不想以任何方式改变酒吧。我只想更改秤的标签。我进一步简化了示例,因为我注意到最小示例不需要两条单独的 geom_bar 行。

以上是关于如何在ggplot中实现绝对百分比比例?的主要内容,如果未能解决你的问题,请参考以下文章

如何在蜂巢中实现百分位数

R语言ggplot2可视化:使用dplyr包计算每个分组个数的比例使用ggplot2可视化条形图(bar plot)并在条形图上添加百分比标签

如何在java中实现负载均衡器

如何在全局scss文件中实现绝对路径? VueJS

R语言ggplot2可视化:使用dplyr包计算每个分组个数的比例(对计算获得的百分比进行近似,值保留整数部分)使用ggplot2可视化条形图(bar plot)并在条形图上添加百分比标签

如何计算两个图像的相似度百分比,如下图我想在我的项目中实现它