R 高宪章瀑布图 x 轴和颜色问题


library(highcharter)
df = data.frame(Name = c("Total","A","B","C","D"),
Value = c(10,5,9,-1,-3))
df
Name Value
1 Total    10
2     A     5
3     B     9
4     C    -2
5     D    -3
highchart() %>% 
hc_chart(type = "waterfall") %>% 
hc_xAxis(categories = df$Name) %>% 
hc_add_series(data = df[1,2]) %>%
hc_add_series(data = df[-1,2])

我正在尝试使用上述代码创建瀑布图,遇到了两个问题:

  1. A不知何故与Total分组在一起,尽管它显示为Series 2.结果,图表上的ValueName不匹配;
  2. 我尝试了以下代码来为正值设置绿色,为负值设置红色。它适用于Total,但不适用于其他人。
library(dplyr)
df2= df %>%
mutate(color = ifelse(df$Value>=0,"green",ifelse(df$Value<0,"red",NA)))
highchart() %>% 
hc_chart(type = "waterfall") %>% 
hc_xAxis(categories = df2$Name) %>% 
hc_add_series(data = df2[1,2], color = df2[1,3]) %>%
hc_add_series(data = df2[-1,2], colors = df2[-1,3])

我认为第一个问题的答案,正如@jbkunst在这里指出的,是将它们作为单独的系列添加时,第一个类别中的每个值都是 0-index。我不确定是否可以为第二个索引指定索引。我尝试添加[1]但没有奏效。

就第二个问题而言,关键是要包括参数isSum。但是,问题是计算只能从左到右进行。我的意思是:如果isSum = c(FALSE,FALSE,FALSE,FALSE,TRUE),那么D将变为23,这是前四个值的总和。现在如果isSum = c(TRUE,FALSE,FALSE,FALSE,FALSE),那么Total将变得0,因为前面没有数字。

话虽如此,我找到的工作解决方案是将Total移到最后:

df2 = data.frame(Name = c("A","B","C","D","Total"),
Value = c(5,9,-1,-3,10))
a = c(FALSE,FALSE,FALSE,FALSE,TRUE)
df2= df2 %>%
mutate(color = ifelse(df2$Value>=0,"green",ifelse(df2$Value<0,"red",NA)))
highchart() %>%
hc_xAxis(type = "category") %>%
hc_add_series(data = df2, type = "waterfall", hcaes(x = Name, y= Value, isSum = a, color = df2$color))

最新更新