Plotly的add_trace函数如何让LCL、LSL参考线延伸到绘图区域边缘
问题原因
你当前使用add_trace绘制水平线时仅传入了y值,未显式指定x轴的取值范围,Plotly默认会将线的x轴区间匹配你传入的y值长度,因此无法延伸到绘图区域的左右边缘。
两种解决方案
方案1:使用专门的水平参考线函数add_hline(更简便)
add_hline是Plotly专门用于绘制水平参考线的函数,默认会自动延伸到x轴的整个区间,无需手动配置x范围,修改后的代码如下:
output$p <- renderPlotly({ plot1 %>% # 替换原有的add_trace绘制LCL、LSL的代码 add_hline(y = lcl()[1], line = list(color = 'lightgreen', width = 2, dash = 'solid'), name = paste("LCL =", lcl()[1])) %>% add_hline(y = lsl()[1], line = list(color = 'red', width = 2, dash = 'solid'), name = paste("LSL =", lsl()[1])) %>% layout( title = paste(" cell culture", input$select), yaxis = list( showline = TRUE, mirror = "ticks", linecolor = toRGB("grey"), linewidth = 1.85 ), xaxis = list( showline = TRUE, mirror = "ticks", linecolor = toRGB("grey"), linewidth = 1.85, tickangle=70)) })
注意:你原代码中两条add_trace之后多了一个多余的%>%,需要删除避免报错。
方案2:保留add_trace写法,手动指定x范围
如果你需要继续使用add_trace的写法,可以先获取整张图x轴的取值范围,再显式传入x参数:
- 先获取原数据的x轴区间,假设你的原散点图x轴数据为
x_data,先计算区间:x_range <- range(x_data) - 修改
add_trace参数,指定x值为x轴的两个端点,y值为重复两次的参考值:
add_trace(x = x_range, y = rep(lcl()[1], 2), type = "scatter", mode = "lines", line = list(color = 'lightgreen', width = 2, dash = 'solid'), inherit = FALSE, name = paste("LCL =", lcl()[1])) %>% add_trace(x = x_range, y = rep(lsl()[1], 2), type = "scatter", mode = "lines", line = list(color = 'red', width = 2, dash = 'solid'), inherit = FALSE, name = paste("LSL =", lsl()[1]))
内容的提问来源于stack exchange,提问作者user16368421
相关产品推荐
相关产品推荐

