R语言plotly柱状图叠加水平平均线仅显示折线问题求助
问题原因
- 初始化
plot_ly对象时未明确指定type = 'bar',导致新增trace时绘图类型推断逻辑混乱,原有柱状图配置被覆盖 add_trace()函数第一个参数前存在多余的空逗号,引发参数解析异常- 未设置
inherit = FALSE,新增trace会继承原有图层的color分组属性,导致平均线被错误拆分,同时干扰原有图层渲染
修正后可运行代码
library(plotly) # 生成分组柱状图部分 vect_x = c("A", "AA", "AAA", "A", "AA", "AAA") vect_y <- c(137.2, 306.2, 76.2, 73.2, 220.9, 99.3) vect_group <- c("US","US","US","Europe","Europe","Europe") # 明确指定type为bar,避免类型推断异常 fig <- plot_ly(x = ~vect_x, y = ~vect_y, color = ~vect_group, type = 'bar') # 添加平均值水平线部分 avg_value <- mean(vect_y, na.rm = TRUE) fig <- fig %>% add_lines( x = unique(vect_x), y = rep(avg_value, length(unique(vect_x))), line = list(color = 'black'), name = '总体平均值', # 不继承原有图层的分组属性,避免平均线被拆分 inherit = FALSE ) # 渲染图表 fig
如果想要保留你原来的scatter类型写法,只需修正多余逗号、添加inherit = FALSE、明确初始柱状图类型即可:
avg_value <- mean(vect_y, na.rm = T) fig %>% add_trace( x = ~vect_x, y = ~rep(avg_value, length(vect_y)), type='scatter', mode='lines+markers', line = list(color = 'black'), inherit = FALSE )
内容的提问来源于stack exchange,提问作者Angelo
相关产品推荐
相关产品推荐

