如何使工具提示跟随Piechart中的光标?

时间:2019-12-11 14:07:27

标签: reactjs recharts

如何使工具提示跟随使用图表绘制的饼图中的光标?

当前显示了一个工具提示,但是它只是停留在某个位置,直到光标直接移到该位置。我需要的是一个与光标一起移动的工具提示。我可以位于图表顶部或其他任何位置的特定位置。

演示:https://jsfiddle.net/kg7Ldj1o/

我需要类似径向条形图中所示的内容。http://recharts.org/en-US/api/RadialBarChart 工具提示会随光标一起移动。

<PieChart width={800} height={400} onMouseEnter={this.onPieEnter}>
  <Tooltip />
  <Pie
    data={data}
    cx={420}
    cy={200}
    startAngle={180}
    endAngle={0}
    cornerRadius={40}
    innerRadius={60}
    outerRadius={80}
    fill="#8884d8"
    paddingAngle={-15}
  >
    {data.map((entry, index) => (
      <Cell
        fill={
          index === 0 || index === data.length - 1
            ? COLORS[index % COLORS.length]
            : 'transparent'
        }
        stroke={
          index === 0 || index === data.length - 1
            ? COLORS[index % COLORS.length]
            : 'transparent'
        }
      />
    ))}
  </Pie>
  <Pie
    data={data}
    cx={420}
    cy={200}
    startAngle={180}
    endAngle={0}
    cornerRadius={0}
    innerRadius={60}
    outerRadius={80}
    fill="#8884d8"
  >
    {data.map((entry, index) => (
      <Cell
        fill={
          index === 0 || index === data.length - 1
            ? 'transparent'
            : COLORS[index % COLORS.length]
        }
        stroke={
          index === 0 || index === data.length - 1
            ? 'transparent'
            : COLORS[index % COLORS.length]
        }
      />
    ))}
  </Pie>
</PieChart>;

1 个答案:

答案 0 :(得分:1)

您可以使用事件中提供的chartX和chartY监听onMouseMove并更新.recharts-tooltip-wrapper元素的左上偏移。

演示jsfiddle link

我已经在下面添加了一个函数onPieEnter

onPieEnter(e){
    console.log(e);
    if(e){
      let toolTipWrapper = document.getElementsByClassName("recharts-tooltip-wrapper")[0];
      toolTipWrapper.style.transition = 'transform 400ms ease 0s';
      toolTipWrapper.style.transform = "translate("+ (e.chartX + 10) +"px, "+ (e.chartY + 10) +"px)";
    }
}
相关问题