|
@@ -207,10 +207,99 @@ const getshuju = (dataheader, data) => {
|
|
|
console.log("初始化后的 series:", series.value);
|
|
|
};
|
|
|
|
|
|
+
|
|
|
+const selectshuju = (listcbval,listcbval2,dataheader, data) => {
|
|
|
+ console.log("图曲线数据1:", data);
|
|
|
+
|
|
|
+ curvedata.value = data;
|
|
|
+ series.value = [];
|
|
|
+ xdata.value = [];
|
|
|
+ const ydata = ref([]);
|
|
|
+
|
|
|
+ vars.value = dataheader; // dataheader 是包含 label 和 prop 的数组
|
|
|
+ vals.value = data; // vals 是表格数据
|
|
|
+
|
|
|
+ console.log('listcbval',listcbval)
|
|
|
+ console.log('listcbval2',listcbval2)
|
|
|
+ // 生成 X 轴数据和 Y 轴数据
|
|
|
+ const xColumns = listcbval; // 获取 listcbval 中选择的列,作为 X 轴
|
|
|
+ const yColumns = listcbval2; // 获取 listcbval2 中选择的列,作为 Y 轴
|
|
|
+ console.log('xColumns',xColumns)
|
|
|
+ console.log('yColumns',yColumns)
|
|
|
+
|
|
|
+ if (xColumns.length === 0 || yColumns.length === 0) {
|
|
|
+ console.error('请先选择 X 轴和 Y 轴的变量');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 遍历每一行数据,为每对 X 和 Y 轴选择的列生成数据
|
|
|
+ for (let i = 0; i < vals.value.length; i++) {
|
|
|
+ let xValue = [];
|
|
|
+ let yValue = [];
|
|
|
+
|
|
|
+ // 对于每个 X 轴选择的列,提取该列数据
|
|
|
+ for (let xCol of xColumns) {
|
|
|
+ let xColumnData = vals.value[i][xCol]; // 获取当前行的 X 列数据
|
|
|
+ xValue.push(xColumnData);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 对于每个 Y 轴选择的列,提取该列数据
|
|
|
+ for (let yCol of yColumns) {
|
|
|
+ let yColumnData = vals.value[i][yCol]; // 获取当前行的 Y 列数据
|
|
|
+ yValue.push(yColumnData);
|
|
|
+ }
|
|
|
+
|
|
|
+ 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: "line", // 散点图类型
|
|
|
+ data: seriesData,
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ // 处理 ECharts 图表配置
|
|
|
+ const myChart = echarts.init(chartContainer.value);
|
|
|
+
|
|
|
+ myChart.setOption({
|
|
|
+ legend: {
|
|
|
+ data: yColumns, // 图例数据使用 Y 轴的列名
|
|
|
+ },
|
|
|
+ xAxis: {
|
|
|
+ type: "category", // 设置为 "category" 表示 x 轴为分类数据
|
|
|
+ data: xdata.value, // x 轴数据为 X 轴数据
|
|
|
+ },
|
|
|
+ yAxis: {
|
|
|
+ type: "value", // y 轴是数值型
|
|
|
+ },
|
|
|
+ series: series.value, // 使用生成的 series 数据
|
|
|
+ });
|
|
|
+
|
|
|
+ console.log("初始化后的 series:", series.value);
|
|
|
+};
|
|
|
+
|
|
|
const linechart = () => {
|
|
|
option.value = {
|
|
|
title: {
|
|
|
- text: "压力分布",
|
|
|
+ text: " ",
|
|
|
left: "7%",
|
|
|
top: "5%",
|
|
|
textStyle: {
|
|
@@ -253,7 +342,7 @@ const linechart = () => {
|
|
|
xAxis: {
|
|
|
type: "category",
|
|
|
boundaryGap: false,
|
|
|
- name: "cd",
|
|
|
+ name: "",
|
|
|
nameGap:30,
|
|
|
nameTextStyle:{
|
|
|
fontSize: 16,
|
|
@@ -277,7 +366,7 @@ const linechart = () => {
|
|
|
},
|
|
|
yAxis: {
|
|
|
type: "value",
|
|
|
- name:"-cl",
|
|
|
+ name:"",
|
|
|
nameGap:30,
|
|
|
nameTextStyle:{
|
|
|
fontsize:16,
|
|
@@ -327,7 +416,7 @@ const linechart = () => {
|
|
|
// console.log('echartData changed:', newValue);
|
|
|
// // console.log(optmonitor1.value);
|
|
|
// }, {deep: true ,immediate: true });
|
|
|
-defineExpose({ linechart, getsockechart, echatinit ,getshuju})
|
|
|
+defineExpose({ linechart, getsockechart, echatinit ,getshuju,selectshuju})
|
|
|
</script>
|
|
|
<style lang="scss" scoped>
|
|
|
.selcal {
|