javascript - 使用 React 和 ChartJS 进行图形流实时数据

标签 javascript reactjs chart.js frontend

我想用这个 plugin 实时传输数据。但目前,我的图表显示相同的数据集并保持静态。即使我正在遵循此 website 的 react 示例下面是我使用的代码:

import React from 'react';
import {Line} from 'react-chartjs-2';
import 'chartjs-plugin-streaming';
var createReactClass = require('create-react-class');

const data = {
    labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
    datasets: [
      {
        label: 'Price',
        fill: false,
        lineTension: 0.1,
        backgroundColor: 'rgba(75,192,192,0.4)',
        borderColor: 'rgba(75,192,192,1)',
        borderCapStyle: 'butt',
        borderDash: [],
        borderDashOffset: 0.0,
        borderJoinStyle: 'miter',
        pointBorderColor: 'rgba(75,192,192,1)',
        pointBackgroundColor: '#fff',
        pointBorderWidth: 1,
        pointHoverRadius: 5,
        pointHoverBackgroundColor: 'rgba(75,192,192,1)',
        pointHoverBorderColor: 'rgba(220,220,220,1)',
        pointHoverBorderWidth: 2,
        pointRadius: 1,
        pointHitRadius: 10,
        data: [65, 59, 80, 81, 56, 55, 40]
      }
    ]
  };
  
  export default createReactClass({
    displayName: 'LineExample',
    render() {
      return (
        <div>
          <Line 
          data={data}
          options={{
              scales: {
                  xAxes: [{
                    realtime: {

                        onRefresh: function(chart) {
                            data.dataset.data.push({
                              x: Date.now(),
                              y: Math.random()
                            });
                        },
                        delay: 2000
                      }
                    }]
              }
          }}
           />
        </div>
      );
    }
});

可能是什么问题? 谢谢!

最佳答案

您提供的数据格式错误,您正在尝试

data.dataset.data.push 但您提供的数据只有 X 值。您需要重新格式化它,数据应具有如下格式:{x:$(value), y:${value}}

打开CodeSandbox中下面的代码片段

import React from "react";
import { Line } from "react-chartjs-2";
import "chartjs-plugin-streaming";
var createReactClass = require("create-react-class");

const data = {
  datasets: [
    {
      label: "Dataset 1",
      borderColor: "rgb(255, 99, 132)",
      backgroundColor: "rgba(255, 99, 132, 0.5)",
      lineTension: 0,
      borderDash: [8, 4],
      data: []
    }
  ]
};

const options = {
  scales: {
    xAxes: [
      {
        type: "realtime",
        realtime: {
          onRefresh: function() {
            data.datasets[0].data.push({
              x: Date.now(),
              y: Math.random() * 100
            });
          },
          delay: 2000
        }
      }
    ]
  }
};

export default createReactClass({
  displayName: "LineExample",
  render() {
    return (
      <div>
        <Line data={data} options={options} />
      </div>
    );
  }
});

关于javascript - 使用 React 和 ChartJS 进行图形流实时数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58382572/

相关文章:

javascript - 如果大于 javascript 到 XSLT 不起作用

reactjs - Material 表编辑/删除按钮更改操作

javascript - 获取哈希值 Rails/Chart.JS

javascript - 在条形图顶部显示计数 - ChartJS

php - 为什么这个函数返回 "undefined"?

javascript - JS 元素淡入淡出(Moz 问题)

javascript - 如何将脚本正确添加到控件?

javascript - setState 不设置值

javascript - react 绑定(bind)功能

javascript - 如何将查询的数据(通过帖子)放在我的 jquery 图表上?