|
@@ -159,6 +159,81 @@ const getsockechart = (data) => {
|
|
|
});
|
|
|
};
|
|
|
|
|
|
+const selectshuju = (listcbval,listcbval2,dataheader,data)=>{
|
|
|
+ curvedata.value = data;
|
|
|
+ series.value = [];
|
|
|
+ xdata.value = [];
|
|
|
+ const ydata = ref([]);
|
|
|
+
|
|
|
+ vars.value = dataheader;
|
|
|
+ vals.value = data;
|
|
|
+
|
|
|
+ const xColumns = listcbval;
|
|
|
+ const yColumns = listcbval2;
|
|
|
+
|
|
|
+ if(xColumns.length === 0 || yColumns.length === 0) {
|
|
|
+ console.error("请先选择 X 轴和 Y 轴的变量");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ for(let i =0; i<vals.value.length; i++){
|
|
|
+ let xValue = [];
|
|
|
+ let yValue = [];
|
|
|
+
|
|
|
+ for (let xCol of xColumns) {
|
|
|
+ xValue.push(vals.value[i][xCol]);
|
|
|
+ }
|
|
|
+ for (let yCol of yColumns) {
|
|
|
+ yValue.push(vals.value[i][yCol]);
|
|
|
+ }
|
|
|
+
|
|
|
+ xdata.value.push(xValue);
|
|
|
+ ydata.value.push(yValue);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 为每个 Y 轴数据列生成一条曲线
|
|
|
+ for (let yColIndex = 0; yColIndex < yColumns.length; yColIndex++) {
|
|
|
+ const label = yColumns[yColIndex]; // 使用 Y 轴列名作为曲线的标签
|
|
|
+ let seriesData = [];
|
|
|
+
|
|
|
+ for (let rowIndex = 0; rowIndex < vals.value.length; rowIndex++) {
|
|
|
+ let xValues = xdata.value[rowIndex]; // 获取当前行的 X 轴数据
|
|
|
+ let yValue = ydata.value[rowIndex][yColIndex]; // 获取当前行的 Y 轴数据
|
|
|
+
|
|
|
+ // 将 X 和 Y 的数据组成成对的数据,传给 seriesData
|
|
|
+ for (let xVal of xValues) {
|
|
|
+ seriesData.push([xVal, yValue]); // 每对 (X, Y) 数据
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 生成曲线的数据
|
|
|
+ series.value.push({
|
|
|
+ name: label, // 使用列名作为曲线名
|
|
|
+ type: "area",
|
|
|
+ data: seriesData,
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ // 处理 ECharts 图表配置
|
|
|
+ const myChart = echarts.init(chartContainer.value);
|
|
|
+
|
|
|
+ myChart.setOption({
|
|
|
+ legend: {
|
|
|
+ data: yColumns, // 图例数据使用 Y 轴的列名
|
|
|
+ },
|
|
|
+ xAxis: {
|
|
|
+ type: "value", // 设置为 "category" 表示 x 轴为分类数据
|
|
|
+ data: xdata.value, // x 轴数据为 X 轴数据
|
|
|
+ scale: true, // 自动缩放
|
|
|
+ },
|
|
|
+ yAxis: {
|
|
|
+ type: "value", // y 轴是数值型
|
|
|
+ // scale: true,
|
|
|
+ },
|
|
|
+ series: series.value, // 使用生成的 series 数据
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
const setOptionfun = () => {
|
|
|
option.value = {
|
|
|
title: {
|
|
@@ -250,6 +325,17 @@ const setOptionfun = () => {
|
|
|
},
|
|
|
}
|
|
|
],
|
|
|
+ dataZoonm: [
|
|
|
+ {
|
|
|
+ typr:'inside',
|
|
|
+ xAxisIndex: [0],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ type:'slider',
|
|
|
+ xAxisIndex: [0],
|
|
|
+ show: false,
|
|
|
+ }
|
|
|
+ ],
|
|
|
series: series.value
|
|
|
}
|
|
|
|