使用react-chartjs在React.js条形图中显示最新标签

时间:2016-11-02 06:03:24

标签: javascript reactjs charts chart.js react-chartjs

我正在使用react-chartjs库在React.js中创建条形图。我能够显示条形图,但由于我的数据很大,每10秒收集一次。条形图显示类似

的内容

Bar chart image

我的数据集看起来像

var loadData = [{
    options: {
        elements: {
            rectangle: {
              borderWidth: 2,
              borderColor: 'rgb(0, 255, 0)',
              borderSkipped: 'bottom'
            }
        },
        responsive: true,
        legend: {
            position: 'top'
        },
        title: {
            display: true,
            text: 'ETL Load Chart'
        },
        scales: {
            xAxes: [{
                type: 'time',
                ticks: {
                    autoSkip:true,
                    maxTicksLimit:20
                }
           }]
        }
    },
    data: {
        labels: [],
        datasets: [
            {

                backgroundColor: "rgba(220,220,220,0.5)",
                data: []
            }
        ]
    }
}]

我正在借助库immutability-helpers

来更新数据
case 'GET_LOAD_DATA_RECEIVED': 
            var payload = action.data.payload
            var dataValues = [], labelValues = [];
            payload.forEach(function(item){
                dataValues.push(parseInt(item['recs_upd']) + 1);
                labelValues.push(item['from_ts']);
            })
            return update(state, {
                0: {
                    data: {
                        labels: {
                            $push: labelValues
                        },
                        datasets: {
                            0: {
                                data: {
                                    $push: dataValues
                                }
                            }
                        }   
                    }
                }
            })
            break;

我正在调用图表的渲染,如

<Bar data={this.props.loadInfo[0].data} options={this.props.loadInfo[0].options} width="600" height="250" />

我正在使用"react-chartjs": "^0.8.0""chart.js": "^1.1.1"我无法更新到chart.js中的2.0我看到showXlabels之后出现了react-chartjs 1}}支持当前版本。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

每10秒仅传递最新n个数据。

const updatedData = {...this.props.loadInfo[0]}

const newData = {
  data: {
    labels: [...updatedData.labels].reverse().slice(0, 30).reverse(),
    datasets: [...updatedData.datasets].reverse().slice(0, 30).reverse(),
  }
}

const newLimitedData = {...updatedData, ...newData }

<Bar data={newLimitedData.data} options={newLimitedData.options} width="600" height="250" />

希望这有帮助!