You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scilab 6 3D散点图Datatip自定义:替换坐标为节点标签

当然可以修改datatip的显示内容!在Scilab 6中,你完全可以通过自定义datatip的回调函数,把默认显示的x/y/z坐标替换成你的节点标签,同时保留损伤值的展示。下面是具体的实现步骤和示例代码:

实现步骤与示例代码
  • 第一步:准备数据:先整理好你的节点标签数组,以及对应的坐标和损伤值数据,确保它们的长度一致(每个数据点对应一个节点标签)。
  • 第二步:绘制3D散点图并获取句柄:用scatter3d绘图时保存图形对象的句柄,后续用来绑定自定义回调。
  • 第三步:编写自定义datatip显示函数:这个函数会在触发datatip时被调用,我们可以在这里指定要显示的内容。
  • 第四步:绑定回调并开启datatip交互:用datatipSetDisplay把自定义函数关联到散点图上,再通过datatipToggle确保交互功能开启。
// 模拟你的数据:x/y坐标、z损伤值、节点标签
x = [1.2, 3.5, 2.8, 4.1, 5.3];
y = [2.1, 3.3, 1.7, 5.2, 4.4];
z = [0.12, 0.48, 0.35, 0.67, 0.22];
node_labels = ["N-001", "N-002", "N-003", "N-004", "N-005"];

// 创建新窗口并绘制3D散点图,保存图形句柄h
scf();
h = scatter3d(x, y, z, "filled"); // 用filled让点更醒目

// 自定义datatip的显示内容函数
function display_content = custom_datatip(h_obj, point_data)
    // 获取当前选中点的索引(从1开始,和数组索引匹配)
    point_idx = point_data.index;
    // 格式化输出内容:节点标签 + 损伤值
    display_content = msprintf("节点标签: %s\n损伤值: %.2f", node_labels(point_idx), z(point_idx));
endfunction

// 将自定义函数绑定到散点图的datatip显示回调
datatipSetDisplay(h, custom_datatip);

// 开启datatip交互(如果默认没开启的话)
datatipToggle();
关键细节说明
  • point_data.index:这个参数会返回当前点击的点在数据数组中的索引,利用它可以精准匹配对应的节点标签和损伤值。
  • msprintf:用来格式化输出文本,你可以根据需求调整格式(比如修改损伤值的小数位数,或者添加更多信息)。
  • 如果你需要同时保留坐标信息,也可以在格式化字符串里加入x(point_idx)和y(point_idx),比如:
    display_content = msprintf("节点标签: %s\n坐标(x,y): (%.1f, %.1f)\n损伤值: %.2f", node_labels(point_idx), x(point_idx), y(point_idx), z(point_idx));
    

内容的提问来源于stack exchange,提问作者Sabine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:17:12