我正在尝试在 R markdown 中创建一个(非传统)瀑布图,但在获得我想要的样式时遇到了一些困难。
这是当前的代码:
library(highcharter)
df = data.frame(Name = c("Start level","B","C","D", "E", "F", "G", "H","End level"),
Value = c(900,-10,10,-10,10, -10, 10, -20, 880),
Type = c("Start", "Reduction", "Rise", "Reduction", "Rise", "Reduction", "Rise", "Reduction", "End"))
hchart(df, type = "waterfall", hcaes(x=Name, y = Value, group="Type"), color = c("blue", "red", "black", "yellow"))
我的目标是最左边的“开始水平”列,最右边的“结束水平”列,以及驱动两个图表之间颜色编码的变化的组件(如“上升”)或图例中的“减少”),条形的瀑布部分与“起始级别”的顶部对齐。我该如何解决这个问题?
最佳答案
您将绘图按类型
分组,因此这意味着瀑布效应仅存在于每个组内,并为每个组创建一个单独的瀑布。
我猜测您希望瀑布贯穿情节的各个方面。这意味着 group
需要消失。由于颜色不再由组分配,因此需要更改。
当按点分配颜色时,您还需要colorByPoint
。为了实现此目的,color
和 colorByPoint
最好在 hc_plotOptions
中使用。
此外,您需要定义最后一个值是 isSum
,以便它不会将该值添加到图表中。
要获取您在 df$Name
中定义的顺序,可以在 `hc_xAxis 中定义它。
hchart(df, type = "waterfall", # removed group, color from hchart, added isSum
hcaes(x = Name, y = Value, isSum = c(rep(F, nrow(df) - 1), T))) %>%
hc_xAxis(categories = df$Name) %>% # set bar order
hc_plotOptions(series = list(colorByPoint = T, # specify w/in series colors
colors = c("blue", rep(c("red", "black"), 3),
"red", "yellow")))
关于r - Highchart 修正瀑布图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77014451/