【问题标题】:React-Vis Legend toggle filter for line chart折线图的 React-Vis Legend 切换过滤器
【发布时间】:2019-07-30 09:48:36
【问题描述】:

我正在使用 react-vis 并尝试实现一个带有可以过滤的图例的折线图,如本网站顶部的第一个图所示:https://uber.github.io/react-vis/examples/showcases/plots 基本上,当单击图例项时,整个系列以及图例项都会变暗。

我猜我需要在 https://uber.github.io/react-vis/documentation/api-reference/legends 的 Legends 下使用 onItemClick 属性来更改我已成功创建的线条的不透明度

<LineSeries
     data={data1}
     opacity={1}
     stroke="#f5222d"
     strokeStyle="solid"
/>

我不确定如何从这里开始,为onItemClick 构建函数

【问题讨论】:

  • 您需要使用Legend组件。

标签: javascript reactjs react-vis


【解决方案1】:

这是一个简单的例子

import React from "react";
import {
  XYPlot,
  LineSeries,
  DiscreteColorLegend
} from "react-vis";

export default class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      series: [{
        title: "Apples",
        disabled: false,
        data: [{ x: 0, y: 12 }, { x: 1, y: 22 }]
      }]
    };
  }

  clickHandler = (item, i) => {
    const { series } = this.state;
    series[0].disabled = !series[0].disabled;
    this.setState({ series });
  };

  render() {
    const { series } = this.state;

    return (
      <div>
        <DiscreteColorLegend
          onItemClick={this.clickHandler}
          width={180}
          items={series}
        />
        <XYPlot height={200} width={200}>
          <LineSeries
            data={series[0].data}
            opacity={series[0].disabled ? 0.2 : 1}
            stroke="#f5222d"
            strokeStyle="solid"
          />
        </XYPlot>
      </div>
    );
  }
}

【讨论】:

  • 虽然我给了它一个+1,因为它很有帮助,但这不再起作用了。 onItemClick 只接受 RVMouseEventHandler 类型的函数,它只接受 1 个参数。
猜你喜欢
  • 1970-01-01
  • 2017-06-29
  • 1970-01-01
  • 2021-09-18
  • 1970-01-01
  • 1970-01-01
  • 2019-06-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多