条形图:将一个堆叠的条与一个躲避的条组合

奥特亨

我正在尝试重新创建在以下报告的第4页上找到的条形图

在此处输入图片说明

该图有三个条,前两个堆叠在一起,第三个在旁边。我见过这个问题的迭代,但是没有一个以这种精确的方式重新创建图形。

数据如下:

a <- rep(c('RHB', 'FERS', 'CSRS'), 3)
b <- c(rep('Assets', 3), rep('Amount Past Due', 3), 
       rep('Actuarial Liability', 3))
c <- c(45.0, 122.5, 152.3, 47.2, 3.4, 4.8, 114.4, 143.4, 181.3)

df <- data.frame(a,b,c)
names(df) <- c('Fund', 'Condition', 'Value')

到目前为止,我所管理的是:

p <- ggplot(subset_data, aes(fill=Condition, y=Value, x=Fund)) + 
  geom_bar(position="stack", stat="identity") + 
  coord_flip() 

我不是很偏爱,ggplot所以如果有另一个更好用的工具,我可以使用其他软件包。

尼洛克

从@aosmith链接中获取一些想法。

您可以调用geom_bar两次,一次调用一次AssetsAmounts Past Due叠加一次,然后再次调用Actuarial Liability

您可以width用来使小节变细,然后微调一组小节,以使两个geom_bar调用不重叠。我选择进行宽度调整0.30.3使边缘对齐。如果您多推动一点,您会看到两个条之间的间隙。

编辑:添加更多格式和数字标签

library(tidyverse)
library(scales)

df_al  <- filter(df, Condition == 'Actuarial Liability')
df_xal <- filter(df, Condition != 'Actuarial Liability')

bar_width <- 0.3
hjust_lab <- 1.1
hjust_lab_small <- -0.2 # hjust for labels on small bars

ggplot() + 
  theme_classic() +
  geom_bar(data = df_al, 
           aes(fill=Condition, y=Value, x=Fund),
           position = position_nudge(x = -bar_width),
           width = bar_width,
           stat="identity") +
  geom_bar(data = df_xal, 
           aes(fill=Condition, y=Value, x=Fund),
           position="stack", 
           stat="identity",
           width = bar_width) +
  geom_text(data = df_al, 
            aes(label= dollar(Value, drop0trailing = TRUE), y=Value, x=Fund),
            position = position_nudge(x = -bar_width),
            hjust = hjust_lab) +
  geom_text(data = df_xal, 
            aes(label= dollar(Value, drop0trailing = TRUE), y=Value, x=Fund),
            position="stack",
            hjust = ifelse(df_xal$Value < 5, hjust_lab_small,  hjust_lab)) +
  scale_fill_manual(values = c('firebrick3', 'lightsalmon', 'dodgerblue')) +
  scale_y_continuous(breaks = seq(0,180, by = 20), labels = dollar) +
  coord_flip() +
  labs(x = NULL, y = NULL, fill = NULL) +
  theme(legend.position = "bottom")

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

chat,js 堆叠条形图(将一个数据集做成堆叠)

条形图中仅丢失一个条

Seaborn 条形图仅在一个方向上带有误差条

如何使用一个变量连续填充ggplot2条形图

将两个堆积条形图组合成一个分组堆积条形图

创建一个堆叠条形图,其中包含 2 个条形的 3 个轨迹

如何在条形图的第一个条形上添加一条线?

根据一个布尔列创建一个“堆叠”条形图

如何将两个数据框组合成一个图表,每个类我将有两个并排堆叠的条形图?

在条形图中仅堆叠一个条形?

需要显示一个堆叠的样式条形图,分为左图和右图

从两个列表创建一个json以在Javascript中制作堆叠的条形图

D3条形图未显示数组中的第一个元素

我想为条形图扩展一个自定义函数,以便我可以堆叠条形图

将两个条形图组合成一个粘性页眉,其中顶部条形图更改高度

为什么mpld3条形图显示一个python文件的“版本”,而不显示另一个?

在 R 中创建一个带有 2 个条形图的条形图

组合分组/堆叠条形图的不同颜色条 - R

如何组合表格以在 ggplot 中创建一个条形图?

如何在同一个包装上组合条形图

如何绘制堆叠的条形图,其中每个条形图的顺序是基于一列的,而每个色阶的颜色是基于另一个的?

将3个条形图合并为一个

将4个条形图合并到R中的一个图形中

css来模仿一个简单的条形图

如何创建一个双轴条形图?

每年一个闪避条形图

matplotlib 条形图显示一个额外的值

R ggplot 只显示一个条形图

条形图不只显示一个x值的条形图