NodeRED技术求助:chart节点无法显示多条曲线的问题排查
解决Node-RED Chart节点只显示单条曲线的问题
我来帮你梳理下问题所在,你遇到的情况主要是函数节点的消息返回格式错误,加上Chart节点需要明确的系列标识这两个原因导致的,咱们一步步来修正:
1. 函数节点返回格式的问题
你当前返回的是[[left,right]],这是一个嵌套数组——Node-RED里,函数节点要输出多个独立消息,直接返回一个一维数组[left, right]就可以了。嵌套数组会被Node-RED识别为「单个消息,其payload是包含两个元素的数组」,而不是两个独立的消息。这就是为什么Chart节点只收到了一组数据,只能画出一条曲线,同时连接Chart的调试节点会输出数组的原因。
2. Chart节点需要区分曲线系列
就算你正确返回两个消息,如果不给每个消息标记不同的系列,Chart节点会默认把它们归为同一系列,自然只会显示同一种颜色。你需要给每个消息对象添加topic或者series属性,告诉Chart节点这是两条独立的曲线。
修正后的代码
把你的函数节点代码改成下面这样:
var left = { payload: msg.payload.readResults[0].v, topic: "左侧数据" // 自定义系列名称,比如"Left"也可以 }; var right = { payload: msg.payload.readResults[1].v, topic: "右侧数据" // 另一个系列名称,和上面区分开 }; return [left, right]; // 直接返回一维数组,输出两个独立消息
为什么这样改能解决问题?
- 去掉嵌套数组后,函数节点会把
left和right作为两个独立的消息发送出去,Chart节点能分别接收这两条数据; topic属性会被Chart节点用来区分不同的曲线系列,自动为每个系列分配不同的颜色,这样就能显示两条不同颜色的曲线了。
部署修改后的流,再发送数据试试:连接函数节点的调试节点会输出两个独立的数值消息,Chart节点也会生成两条对应不同颜色的曲线啦。
内容的提问来源于stack exchange,提问作者Glenn94
相关产品推荐
相关产品推荐

