|
@@ -185,9 +185,6 @@ export default {
|
|
|
}
|
|
|
const data = this.chartData.data && this.chartData.data[0];
|
|
|
let trace = {};
|
|
|
- // 保存原始颜色和大小
|
|
|
- this.originalColors = [...data.yData];
|
|
|
- this.originalSizes = new Array(data.xData.length).fill(6); // 初始点大小
|
|
|
|
|
|
if (this.chartType === "scatter") {
|
|
|
// 如果有 colorbar 数据
|
|
@@ -227,6 +224,10 @@ export default {
|
|
|
} else {
|
|
|
colorValues = data.yData.map((date) => timeMapping[date]);
|
|
|
}
|
|
|
+ // 保存原始颜色和大小
|
|
|
+ // this.originalColors = [...data.yData];
|
|
|
+ this.originalColors = [...colorValues];
|
|
|
+ this.originalSizes = new Array(data.xData.length).fill(6); // 初始点大小
|
|
|
|
|
|
// 绘制 2D 散点图
|
|
|
trace = {
|
|
@@ -235,27 +236,25 @@ export default {
|
|
|
mode: "markers",
|
|
|
type: "scattergl", // 使用 scattergl 提高性能
|
|
|
text: data.engineName, // 提示文本
|
|
|
- // marker: {
|
|
|
- // color: colorValues, // 使用时间数据来映射颜色
|
|
|
- // colorscale: this.color1
|
|
|
- // ? [...colors]
|
|
|
- // : [
|
|
|
- // [0, "#F9FDD2"],
|
|
|
- // [0.15, "#E9F6BD"],
|
|
|
- // [0.3, "#C2E3B9"],
|
|
|
- // [0.45, "#8AC8BE"],
|
|
|
- // [0.6, "#5CA8BF"],
|
|
|
- // [0.75, "#407DB3"],
|
|
|
- // [0.9, "#2E4C9A"],
|
|
|
- // [1, "#1B2973"],
|
|
|
- // ], // 默认颜色渐变
|
|
|
- // colorbar: {
|
|
|
- // // title: data.colorbartitle, // 色标标题
|
|
|
- // // tickvals: tickvals, // 设置刻度值
|
|
|
- // // ticktext: ticktext, // 设置刻度文本
|
|
|
- // tickmode: "array", // 使用数组模式、
|
|
|
- // },
|
|
|
- // },
|
|
|
+ marker: {
|
|
|
+ color: colorValues, // 根据 colorbar 映射的数字设置颜色
|
|
|
+ colorscale: this.color1
|
|
|
+ ? colors // 如果有 color1 使用自定义颜色比例
|
|
|
+ : [
|
|
|
+ [0, "#F9FDD2"],
|
|
|
+ [0.15, "#E9F6BD"],
|
|
|
+ [0.3, "#C2E3B9"],
|
|
|
+ [0.45, "#8AC8BE"],
|
|
|
+ [0.6, "#5CA8BF"],
|
|
|
+ [0.75, "#407DB3"],
|
|
|
+ [0.9, "#2E4C9A"],
|
|
|
+ [1, "#1B2973"],
|
|
|
+ ], // 默认颜色渐变
|
|
|
+ // colorbar: data.colorbar
|
|
|
+ // ? { title: data.colorbartitle || "Color Legend" }
|
|
|
+ // : undefined, // 如果有 colorbar 显示,否则不显示
|
|
|
+ size: new Array(data.xData.length).fill(this.pointSize), // 点的大小
|
|
|
+ },
|
|
|
};
|
|
|
if (data.colorbartitle === "密度") {
|
|
|
trace.marker.cmin = 0;
|
|
@@ -338,6 +337,7 @@ export default {
|
|
|
backgroundcolor: "#e5ecf6",
|
|
|
showbackground: true, // 显示背景
|
|
|
},
|
|
|
+ showlegend: false,
|
|
|
// showlegend: true,
|
|
|
plot_bgcolor: "#e5ecf6",
|
|
|
gridcolor: "#fff", // 设置网格线颜色
|
|
@@ -475,30 +475,41 @@ export default {
|
|
|
});
|
|
|
|
|
|
// 使用 Plotly.restyle 更新颜色和大小
|
|
|
- Plotly.restyle(gd, {
|
|
|
- "marker.color": [newColors],
|
|
|
- "marker.size": [newSize],
|
|
|
- });
|
|
|
+ // Plotly.restyle(gd, {
|
|
|
+ // "marker.color": [newColors],
|
|
|
+ // "marker.size": [newSize],
|
|
|
+ // });
|
|
|
|
|
|
// 确保选中的点在最上面
|
|
|
- const scatterTrace = gd.data[0]; // 原来的散点数据
|
|
|
- const selectedTrace = {
|
|
|
+ // const scatterTrace = gd.data[0]; // 原来的散点数据
|
|
|
+ // const selectedTrace = {
|
|
|
+ // x: this.selectedPoints.map((p) => p.x),
|
|
|
+ // y: this.selectedPoints.map((p) => p.y),
|
|
|
+ // mode: "markers",
|
|
|
+ // type: "scattergl",
|
|
|
+ // marker: {
|
|
|
+ // color: "red", // 选中点颜色
|
|
|
+ // size: 10,
|
|
|
+ // },
|
|
|
+ // };
|
|
|
+
|
|
|
+ // // 合并数据,并保证选中点在最后
|
|
|
+ // const updatedTraces = [scatterTrace, selectedTrace]; // 选中的点 `selectedTrace` 放在最后
|
|
|
+
|
|
|
+ // // 更新图表
|
|
|
+ // Plotly.react(gd, updatedTraces, gd.layout);
|
|
|
+ Plotly.addTraces(gd, {
|
|
|
x: this.selectedPoints.map((p) => p.x),
|
|
|
y: this.selectedPoints.map((p) => p.y),
|
|
|
mode: "markers",
|
|
|
type: "scattergl",
|
|
|
marker: {
|
|
|
- color: "red", // 选中点颜色
|
|
|
+ color: "red",
|
|
|
size: 10,
|
|
|
},
|
|
|
- };
|
|
|
-
|
|
|
- // 合并数据,并保证选中点在最后
|
|
|
- const updatedTraces = [scatterTrace, selectedTrace]; // 选中的点 `selectedTrace` 放在最后
|
|
|
-
|
|
|
- // 更新图表
|
|
|
- Plotly.react(gd, updatedTraces, gd.layout);
|
|
|
-
|
|
|
+ name: "选中点",
|
|
|
+ showlegend: false,
|
|
|
+ });
|
|
|
// 处理选中的数据
|
|
|
this.getSelectData(this.selectedPoints, gd.layout);
|
|
|
});
|
|
@@ -508,6 +519,16 @@ export default {
|
|
|
Plotly.restyle(gd, {
|
|
|
"marker.color": [this.originalColors],
|
|
|
"marker.size": [this.originalSizes],
|
|
|
+ // "marker.colorscale": [
|
|
|
+ // [0, "#F9FDD2"],
|
|
|
+ // [0.15, "#E9F6BD"],
|
|
|
+ // [0.3, "#C2E3B9"],
|
|
|
+ // [0.45, "#8AC8BE"],
|
|
|
+ // [0.6, "#5CA8BF"],
|
|
|
+ // [0.75, "#407DB3"],
|
|
|
+ // [0.9, "#2E4C9A"],
|
|
|
+ // [1, "#1B2973"],
|
|
|
+ // ],
|
|
|
});
|
|
|
},
|
|
|
getSelectData(selectedPoints, layout) {
|