Rails 7中使用Chartkick绘制多系列图表时USL/LSL无法显示的问题
问题原因
Chartkick的line_chart要求每个系列的data必须是**键值对数组(如[[x1, y1], [x2, y2]])**或哈希结构,你直接传入单个整数值@usl和@lsl,Chartkick无法识别这种格式,所以这两个系列不会渲染。
解决方案
要渲染USL和LSL的水平线,需要把单个整数值转换成覆盖图表x轴范围的点数组:
- 先在控制器中计算
@h对应的x轴起止索引(保证水平线覆盖整个图表区间):
# 若@h是哈希,取所有键的最小/最大值;若@h是数组,取0和数组长度-1 @min_x = @h.keys.min || 0 @max_x = @h.keys.max || 0
- 修改视图中的图表代码,将
@usl和@lsl包装成包含两个点的数组:
<%= line_chart([ {name: "PROCESS_TIME_SAMPLES", data: @h.map{|t| [t.index, t] }}, {name: "USL", data: [[@min_x, @usl], [@max_x, @usl]]}, {name: "LSL", data: [[@min_x, @lsl], [@max_x, @lsl]]} ]) %>
这样Chartkick就能识别USL和LSL的系列数据,渲染出贯穿整个图表的水平线。
内容的提问来源于stack exchange,提问作者TEJINDER SINGH
相关产品推荐
相关产品推荐

