|
@@ -57,39 +57,6 @@ const echatinit = () => {
|
|
|
series.value = []
|
|
|
xdata.value = []
|
|
|
}
|
|
|
-// 从websocket取数据
|
|
|
-// const getsockechart = (data) => {
|
|
|
-// curvedata.value = data
|
|
|
-// series.value = []
|
|
|
-// let rows = curvedata.value
|
|
|
-// for (let i = 0; i < rows.length; i++) {
|
|
|
-// vars.value = rows[i].vars.split(",")
|
|
|
-// vals.value = rows[i].vals.split(" ")
|
|
|
-// let data = vals.value.map((str) => Number(str))
|
|
|
-// convergeDate.value.push(data)
|
|
|
-// xdata.value.push(rows[i].step)
|
|
|
-// }
|
|
|
-// for (let j = 0; j < vars.value.length; j++) {
|
|
|
-// let firstColumn = convergeDate.value.map((row) => row[j])
|
|
|
-// let item = {
|
|
|
-// name: vars.value[j],
|
|
|
-// type: "line",
|
|
|
-// stack: "Total",
|
|
|
-// data: firstColumn
|
|
|
-// }
|
|
|
-// series.value.push(item)
|
|
|
-// }
|
|
|
-// myChart.setOption({
|
|
|
-// legend: {
|
|
|
-// data: vars.value
|
|
|
-// },
|
|
|
-// xAxis: {
|
|
|
-// data: xdata.value
|
|
|
-// },
|
|
|
-// series: series.value
|
|
|
-// })
|
|
|
-// // linechart();
|
|
|
-// }
|
|
|
|
|
|
const getsockechart = (data) => {
|
|
|
console.log("曲线数据2:", data);
|
|
@@ -139,94 +106,115 @@ const getsockechart = (data) => {
|
|
|
console.log("更新后的 series2:", series.value);
|
|
|
};
|
|
|
|
|
|
-// 数据转化废弃
|
|
|
// const getshuju = (data) => {
|
|
|
-// curvedata.value = data
|
|
|
-// convergeDate.value = []
|
|
|
-// series.value = []
|
|
|
-// xdata.value = []
|
|
|
-// let rows = JSON.parse(curvedata.value)
|
|
|
-// let num = 0
|
|
|
+// // console.log("曲线数据2:", data);
|
|
|
+
|
|
|
+// curvedata.value = data;
|
|
|
+// convergeDate.value = [];
|
|
|
+// series.value = [];
|
|
|
+// xdata.value = [];
|
|
|
+
|
|
|
+// // 解析传入的 JSON 数据
|
|
|
+// let rows = JSON.parse(curvedata.value);
|
|
|
+
|
|
|
+// vars = rows[0].vars.split(" ");
|
|
|
+
|
|
|
// for (let i = 0; i < rows.length; i++) {
|
|
|
-// num += 1
|
|
|
-// vars.value = rows[i].vars.split(",")
|
|
|
-// vals.value = rows[i].vals.split(" ")
|
|
|
-// let data = vals.value.map((str) => Number(str))
|
|
|
-// convergeDate.value.push(data)
|
|
|
-// xdata.value.push(num)
|
|
|
-// }
|
|
|
-// console.log(convergeDate.value)
|
|
|
-// // console.log( convergeDate.value);
|
|
|
-// for (let j = 0; j < vars.value.length; j++) {
|
|
|
-// let firstColumn = convergeDate.value.map((row) => row[j])
|
|
|
-// let item = {
|
|
|
-// name: vars.value[j],
|
|
|
-// type: "line",
|
|
|
-// stack: "Total",
|
|
|
-// data: firstColumn
|
|
|
+// let vals = rows[i].vals.split(" ");
|
|
|
+// let existingSeries = series.value.find((s) => s.name === vars[1]);
|
|
|
+
|
|
|
+// if (existingSeries) {
|
|
|
+// existingSeries.data.push([parseFloat(vals[0]), -1*parseFloat(vals[1])]);
|
|
|
+// } else {
|
|
|
+// series.value.push({
|
|
|
+// name: vars[1],
|
|
|
+// type: "line",
|
|
|
+// showSymbol: false,
|
|
|
+// data: [[parseFloat(vals[0]), -1*parseFloat(vals[1])]],
|
|
|
+// });
|
|
|
// }
|
|
|
-// series.value.push(item)
|
|
|
// }
|
|
|
+
|
|
|
+// console.log("vars:", vars);
|
|
|
+// console.log("vals:", vals);
|
|
|
+
|
|
|
// myChart.setOption({
|
|
|
// legend: {
|
|
|
-// data: vars.value
|
|
|
+// data: [], // 图例数据
|
|
|
// },
|
|
|
// xAxis: {
|
|
|
-// data: xdata.value
|
|
|
+// type: "value",
|
|
|
// },
|
|
|
-// series: series.value
|
|
|
-// })
|
|
|
-// }
|
|
|
+// yAxis: {
|
|
|
+// type: "value" // Y 轴也是数值轴
|
|
|
+// },
|
|
|
+// series: series.value
|
|
|
+// });
|
|
|
|
|
|
-const getshuju = (data) => {
|
|
|
- // console.log("曲线数据2:", data);
|
|
|
+// console.log("初始化后的 xdata2:", xdata.value);
|
|
|
+// console.log("初始化后的 series2:", series.value);
|
|
|
+// };
|
|
|
|
|
|
+const getshuju = (data) => {
|
|
|
curvedata.value = data;
|
|
|
convergeDate.value = [];
|
|
|
series.value = [];
|
|
|
xdata.value = [];
|
|
|
-
|
|
|
- // 解析传入的 JSON 数据
|
|
|
+
|
|
|
let rows = JSON.parse(curvedata.value);
|
|
|
+ let vars = rows[0].vars.split(" "); // ["x", "cp"]
|
|
|
|
|
|
- vars = rows[0].vars.split(" ");
|
|
|
+ let colorMap = {}; // key: gser % 100000, value: color
|
|
|
+ const colorList = ['#5470C6', '#91CC75', '#EE6666', '#FAC858', '#73C0DE', '#3BA272'];
|
|
|
+
|
|
|
+ let colorIndex = 0;
|
|
|
|
|
|
for (let i = 0; i < rows.length; i++) {
|
|
|
- let vals = rows[i].vals.split(" ");
|
|
|
- let existingSeries = series.value.find((s) => s.name === vars[1]);
|
|
|
+ let row = rows[i];
|
|
|
+ let gser = row.gser;
|
|
|
+ let groupKey = gser % 100000;
|
|
|
+ let vals = row.vals.split(" ");
|
|
|
+ let x = parseFloat(vals[0]);
|
|
|
+ let y = -1 * parseFloat(vals[1]);
|
|
|
+
|
|
|
+ // 为每个 groupKey 分配一个颜色
|
|
|
+ if (!(groupKey in colorMap)) {
|
|
|
+ colorMap[groupKey] = colorList[colorIndex % colorList.length];
|
|
|
+ colorIndex++;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查找是否已存在该 gser 的曲线
|
|
|
+ let existingSeries = series.value.find(s => s.name === `gser_${gser}`);
|
|
|
|
|
|
if (existingSeries) {
|
|
|
- existingSeries.data.push([parseFloat(vals[0]), -1*parseFloat(vals[1])]);
|
|
|
+ existingSeries.data.push([x, y]);
|
|
|
} else {
|
|
|
series.value.push({
|
|
|
- name: vars[1],
|
|
|
+ name: `gser_${gser}`,
|
|
|
type: "line",
|
|
|
showSymbol: false,
|
|
|
- data: [[parseFloat(vals[0]), -1*parseFloat(vals[1])]],
|
|
|
+ data: [[x, y]],
|
|
|
+ lineStyle: {
|
|
|
+ color: colorMap[groupKey]
|
|
|
+ }
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- console.log("vars:", vars);
|
|
|
- console.log("vals:", vals);
|
|
|
-
|
|
|
myChart.setOption({
|
|
|
- legend: {
|
|
|
- data: [], // 图例数据
|
|
|
- },
|
|
|
+ // legend: {
|
|
|
+ // data: series.value.map(s => s.name),
|
|
|
+ // },
|
|
|
xAxis: {
|
|
|
- type: "value",
|
|
|
- min: 0,
|
|
|
- max: 1,
|
|
|
+ type: "value",
|
|
|
},
|
|
|
yAxis: {
|
|
|
- type: "value" // Y 轴也是数值轴
|
|
|
+ type: "value"
|
|
|
},
|
|
|
- series: series.value
|
|
|
+ series: series.value
|
|
|
});
|
|
|
|
|
|
- console.log("初始化后的 xdata2:", xdata.value);
|
|
|
- console.log("初始化后的 series2:", series.value);
|
|
|
+ console.log("按 gser 分类后的 series:", series.value);
|
|
|
};
|
|
|
|
|
|
const linechart = () => {
|
|
@@ -338,24 +326,7 @@ const linechart = () => {
|
|
|
myChart.resize()
|
|
|
}
|
|
|
}
|
|
|
-// 监听数据变化,重绘图表
|
|
|
-// watch( myChart.value, () => {
|
|
|
-// console.log(11111)
|
|
|
-// window.onresize = function() {
|
|
|
-// // 让图表自适应大小
|
|
|
-// myChart.value.resize();
|
|
|
-// };
|
|
|
-// });
|
|
|
-//window.addEventListener('resize', handleResize);
|
|
|
-// watch(series, () => {
|
|
|
-// linechart();
|
|
|
-// }, { deep: true });
|
|
|
-// watch(() =>props.echartdata, (newValue, oldValue) => {
|
|
|
-// // 这里处理 echartData 变化的逻辑
|
|
|
-// console.log(11111)
|
|
|
-// console.log('echartData changed:', newValue);
|
|
|
-// // console.log(optmonitor1.value);
|
|
|
-// }, {deep: true ,immediate: true });
|
|
|
+
|
|
|
defineExpose({ linechart, getshuju, getsockechart, echatinit })
|
|
|
</script>
|
|
|
<style lang="scss" scoped>
|