首页 > 解决方案 > 价值标签瀑布

问题描述

我无法得到我想要的图表。我用这个信息创建了一个瀑布图:

姓名 类型 开始 结尾 价值
GTO 0 18283 18283
光盘 出去 18283 16027 -2256
除外 出去 16027 12415 -3612
NR 0 12415 12415
维克 出去 12415 9551 -2863
VLC 出去 9551 8348 -1203
马可 8348 0 8348

<a href='https://postimages.org/' target='_blank'><img src='https://i.postimg.cc/qq77jn9T/MACO-Waterfall.png' border='0' alt='MACO-Waterfall'/></a>

但是,我无法在顶部添加每列的值。我尝试使用 geom_text 但每次都给我一个错误。

您知道如何将值放在每列的顶部吗?感谢您的帮助!

这是我使用的最后一个代码,我尝试了不同的选项,但没有成功,所以我删除了它们。

  waterfall_info %>% 
ggplot(aes(x = reorder(name, id), fill = type)) +
  geom_rect(aes(x = reorder(name, id), xmin = id - 0.45, xmax = id + 0.45, ymin = end, ymax = start)) +
  geom_text(label = value) +
  labs(title = "MACO Waterfall") + xlab("Measure") +
  scale_fill_viridis_d(guide = FALSE)

标签: r

解决方案


这是一个ggvis解决方案:

library(ggvis)
library(tidyverse)

df1 <- df %>% 
    mutate(id=row_number())

df1 %>%
    ggvis(x = ~reorder(name, id), y = ~end) %>%
    layer_rects(y2 = ~start, width = band(),
                fill = ~type) %>%
    layer_text(x = prop("x", ~reorder(name, id)),
               y = ~end,
               text := ~value) %>%
    scale_nominal("x", name = "xcenter", padding = 1.2)

在此处输入图像描述

数据:

df <- structure(list(name = c("GTO", "Disc", "Exc", "NR", "VIC", "VLC", 
"MACO"), type = c("net", "out", "out", "net", "out", "out", "net"
), start = c(0L, 18283L, 16027L, 0L, 12415L, 9551L, 8348L), end = c(18283L, 
16027L, 12415L, 12415L, 9551L, 8348L, 0L), value = c(18283L, 
-2256L, -3612L, 12415L, -2863L, -1203L, 8348L)), class = "data.frame", row.names = c(NA, 
-7L))

推荐阅读