作图组件react-plotly.js和数据统计组件simple-statistics

simple-statistics官网:https://simplestatistics.org/docs/#median

  demo结构:

作图组件react-plotly.js和数据统计组件simple-statistics_第1张图片

  package.json

{
  "name": "react-blank",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
"plotly.js": "^1.52.1", "react": "^16.12.0", "react-dom": "^16.12.0", "react-plotly.js": "^2.4.0", "react-scripts": "3.3.0", "simple-statistics": "^7.0.7" }, "scripts": { "start": "react-scripts --max_old_space_size=4096 start", "build": "react-scripts --max_old_space_size=4096 build", "test": "react-scripts test", "eject": "react-scripts eject" },
...
}

  Figure.jsx

import React from 'react'
import PropTypes from 'prop-types'
import Plot from 'react-plotly.js'
import * as ss from 'simple-statistics'

export default class Figure extends React.PureComponent {
    render() {
        let median = ss.median(this.props.y)
        let quantile20 = ss.quantile(this.props.y, 0.2)
        let quantile80 = ss.quantile(this.props.y, 0.8)

        let median_list = []
        let quantile20_list = []
        let quantile80_list = []

        for (var i = this.props.x.length - 1; i >= 0; i--) {
            median_list.push(median)
            quantile20_list.push(quantile20)
            quantile80_list.push(quantile80)
        }

        return (
            
<Plot data={[ { x: this.props.x, y: this.props.y, type: 'scatter', mode: 'markers', name: 'spread', }, { x: this.props.x, y: median_list, type: 'scatter', mode: 'line', name: 'median', }, { x: this.props.x, y: quantile20_list, type: 'scatter', mode: 'line', name: 'quantile20', }, { x: this.props.x, y: quantile80_list, type: 'scatter', mode: 'line', name: 'quantile80', }, ]} layout={{ width: 1500, title: 'Plot' }} />
) } } Figure.propTypes = { x: PropTypes.array, y: PropTypes.array, }

  index.js

import React from 'react'
import ReactDOM from 'react-dom'

import App from './components/App.jsx'

ReactDOM.render(, document.getElementById('root'))

  App.jsx

import React from 'react'
import Figure from './Figure.jsx'

export default class App extends React.Component {
    constructor(props) {
        super(props)
        this.state = {}
    }

    render() {
        const figureDateKeys = Object.keys(figureData)
        return (
            
{figureData && figureDateKeys.length > 0 &&
}
) } } const figureData = { "2020-01-20 17:20:00": -0.0027, "2020-01-20 17:25:00": -0.0034, "2020-01-20 17:30:00": -0.0038, "2020-01-20 17:35:00": -0.004, "2020-01-20 17:40:00": -0.0041, "2020-01-20 17:45:00": -0.0017, "2020-01-20 17:50:00": -0.002, "2020-01-20 17:55:00": -0.0017, "2020-01-20 18:00:00": -0.0014, "2020-01-20 18:05:00": -0.0006, "2020-01-20 18:10:00": -0.0016, "2020-01-20 18:15:00": -0.0025, "2020-01-20 18:20:00": -0.003, "2020-01-20 18:25:00": -0.0028, "2020-01-20 18:30:00": -0.0029, "2020-01-20 18:35:00": -0.0031, "2020-01-20 18:40:00": -0.0024, "2020-01-20 18:45:00": -0.0026, "2020-01-20 18:50:00": -0.0021, "2020-01-20 18:55:00": -0.0007, "2020-01-20 19:00:00": -0.0014, "2020-01-20 19:05:00": -0.0018, "2020-01-20 19:10:00": -0.0021, "2020-01-20 19:15:00": -0.0013, "2020-01-20 19:20:00": -0.0015, "2020-01-20 19:25:00": -0.002, "2020-01-20 19:30:00": -0.0029, "2020-01-20 19:35:00": -0.0028, "2020-01-20 19:40:00": -0.0034, "2020-01-20 19:45:00": -0.004, "2020-01-20 19:50:00": -0.0042, "2020-01-20 19:55:00": -0.004, "2020-01-20 20:00:00": -0.0059, "2020-01-20 20:05:00": -0.005, "2020-01-20 20:10:00": -0.0055, "2020-01-20 20:15:00": -0.0045, "2020-01-20 20:20:00": -0.0068, "2020-01-20 20:25:00": -0.0009, "2020-01-20 20:30:00": -0.0029, "2020-01-20 20:35:00": -0.0023, "2020-01-20 20:40:00": -0.0035, "2020-01-20 20:45:00": 0.0003, "2020-01-20 20:50:00": -0.0006, "2020-01-20 20:55:00": -0.0024, "2020-01-20 21:00:00": -0.002, "2020-01-20 21:05:00": -0.0049, "2020-01-20 21:10:00": -0.0059, "2020-01-20 21:15:00": -0.0087, "2020-01-20 21:20:00": -0.0066, "2020-01-20 21:25:00": -0.0079, "2020-01-20 21:30:00": -0.0051, "2020-01-20 21:35:00": -0.0019, "2020-01-20 21:40:00": -0.0044, "2020-01-20 21:45:00": -0.0018, "2020-01-20 21:50:00": 0.0017, "2020-01-20 21:55:00": 0.0033, "2020-01-20 22:00:00": 0.0005, "2020-01-20 22:05:00": 0.0026, "2020-01-20 22:10:00": 0.0015, "2020-01-20 22:15:00": 0.0017, "2020-01-20 22:20:00": 0.0002, "2020-01-20 22:25:00": 0.0031, "2020-01-20 22:30:00": 0.0026, "2020-01-20 22:35:00": -0.0022, "2020-01-20 22:40:00": -0.0017, "2020-01-20 22:45:00": -0.0028, "2020-01-20 22:50:00": -0.0026, "2020-01-20 22:55:00": -0.0021, "2020-01-20 23:00:00": -0.0025, "2020-01-20 23:05:00": -0.0033, "2020-01-20 23:10:00": -0.0021, "2020-01-20 23:15:00": -0.0012, "2020-01-20 23:20:00": -0.0001, "2020-01-20 23:25:00": -0.0017, "2020-01-20 23:30:00": -0.002, "2020-01-20 23:35:00": -0.0008, "2020-01-20 23:40:00": -0.0006 }

 

  npm start或npm run build时报错:<--- Last few GCs --->

"scripts": {
    "start": "react-scripts --max_old_space_size=4096 start",
    "build": "react-scripts --max_old_space_size=4096 build"
}

  渲染效果:

作图组件react-plotly.js和数据统计组件simple-statistics_第2张图片

 

   ---

你可能感兴趣的:(作图组件react-plotly.js和数据统计组件simple-statistics)