r - 价值标签瀑布
问题描述
我无法得到我想要的图表。我用这个信息创建了一个瀑布图:
姓名 | 类型 | 开始 | 结尾 | 价值 |
---|---|---|---|---|
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)
解决方案
这是一个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))
推荐阅读
- anylogic - 如何使用带有 AnyLogic 的 distanceByRoute 计算车辆行驶的距离?
- cors - 使用 AutoSuggest API 时出现 CORS 策略错误
- javascript - 比较字符串中的非英文字符
- c# - 按类属性的接近程度对列表项进行分组,并具有一定的阈值
- gradle - 如何遍历 Gradle 中所有已注册的任务?
- rust - 为什么 VecDeque 的尾部成员指向第一个元素而不是最后一个元素?
- swift - 在 Swift (macOS) 中控制背景音乐
- reactjs - Normalizr + react-virtualized:如何在 react-virtualized 中使用规范化的数据对象?
- python - 如何在不阻塞的情况下读取控制台输入?
- solidity - 你怎么能遍历一个地址数组?