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

如何在Plotly中实现鼠标悬停时增大线条宽度及标记点尺寸?

实现Plotly线条与标记点的悬停放大动画效果

要实现鼠标悬停时线条变宽、标记点放大的平滑动画效果,可以通过Plotly的事件监听和样式重绘功能来完成,具体实现方式如下:

  • 绑定交互事件:给图表绑定plotly_hover和plotly_unhover事件,捕捉鼠标悬停及离开线条的动作
  • 动态调整样式+过渡动画:在事件回调里调用Plotly.restyle方法,修改线条宽度与标记点尺寸,同时通过transition参数设置动画时长,实现平滑的放大/缩小效果

以下是完整的可运行代码:

<head>
  <script src="https://cdn.plot.ly/plotly-2.24.2.min.js" charset="utf-8"></script>
</head>
<body>
  <div id="myDiv"></div>
  <script>
    var data = [
      {
        x: ['2013-10-04 22:23:00', '2013-11-04 22:23:00', '2013-12-04 22:23:00'],
        y: [1, 3, 6],
        type: 'scatter',
        mode: "lines+markers",
        marker: {
          size: 10
        },
        line: {
          width: 4
        }
      }
    ];

    // 初始化图表
    const plot = Plotly.newPlot('myDiv', data);
    
    // 定义样式参数和动画时长
    const defaultLineWidth = 4;
    const defaultMarkerSize = 10;
    const hoverLineWidth = 8;
    const hoverMarkerSize = 16;
    const animDuration = 300; // 动画时长,单位毫秒

    // 鼠标悬停时放大样式
    plot.on('plotly_hover', function(eventData) {
      const traceIndex = eventData.points[0].curveNumber;
      Plotly.restyle('myDiv', {
        'line.width': hoverLineWidth,
        'marker.size': hoverMarkerSize
      }, [traceIndex], {
        transition: { duration: animDuration }
      });
    });

    // 鼠标离开时恢复默认样式
    plot.on('plotly_unhover', function(eventData) {
      const traceIndex = eventData.points[0].curveNumber;
      Plotly.restyle('myDiv', {
        'line.width': defaultLineWidth,
        'marker.size': defaultMarkerSize
      }, [traceIndex], {
        transition: { duration: animDuration }
      });
    });
  </script>
</body>

关键代码说明

  • plotly_hover/plotly_unhover:Plotly内置的交互事件,分别在鼠标悬停到数据点、离开数据点时触发
  • Plotly.restyle:用于动态修改图表样式的核心方法,第三个参数指定要修改的trace索引,第四个参数的transition配置控制动画的平滑度
  • 样式自定义:你可以根据需求修改hoverLineWidth、hoverMarkerSize以及animDuration的数值,调整到符合预期的效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 00:12:50