如何用react.js将整个图形以json数据的形式绘制到ploty中?[重复]

问题描述 投票:0回答:1

我有一个完整的图形定义到本地的json文件中,就像下面。

{
  "data":[
{
  "x": [0, 1, 2, 3, 4, 5, 6, 7, 8],
  "y": [0, 3, 6, 4, 5, 2, 3, 5, 4],
  "type": "scatter",
  "name":"Plot 1"
},
{
  "x": [0, 1, 2, 3, 4, 5, 6, 7, 8],
  "y": [0, 4, 7, 8, 3, 6, 3, 3, 4],
  "type": "scatter",
  "name":"Plot 2"
},
{
  "x": [0, 1, 2, 3, 4, 5, 6, 7, 8],
  "y": [0, 5, 3, 10, 5.33, 2.24, 4.4, 5.1, 7.2],
  "type": "scatter",
  "name":"Plot 3"
}
],

"layout":{
  "showlegend": true,
  "legend": {"orientation": "h"}
}
}

我需要做的就是将json数据传入Plotly。这是我的反应代码。

import React, { Component } from "react";
import Plotly from "plotly.js-basic-dist";
import createPlotlyComponent from "react-plotly.js/factory";

const Plot = createPlotlyComponent(Plotly);

class ThresholdAnalysis extends Component{
 render(){
    const dataJson = require('../assets/plotly_vars.json');
    const data = dataJson;
    var graph = JSON.parse(myData);
    return(
        <div>
            <Plot data={graph.data} layout={figure.layout} />
        </div>
    );
 }
}

export default ThresholdAnalysis;

我能够用下面的代码在原始javascript中完成这个任务。

<body>
 <div id="plotly-chart"></div>
 <!-- Plotly.js -->
 <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
 <script>
   var xmlhttp = new XMLHttpRequest();
   xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
     var plotly_vars = JSON.parse(this.responseText);
     Plotly.newPlot('plotly-chart', plotly_vars['data'], plotly_vars['layout']);
    }
   };
   xmlhttp.open("GET", "plotly_vars.json", true);
   xmlhttp.send(); 
  </script>
</body>

我是新的反应和剧情。因此,任何形式的建议或帮助将被感激。

reactjs plotly
1个回答
1
投票

你应该可以在组件的顶部导入数据,就像你在下面做的那样。React, Plotly等,使用下面的导入。

import * as graph from "../assets/plotly_vars.json";

然后在你的组件中,你可以使用变量 graph 因为你已经即 graph.data 会给你数据数组。

例子:

import React, { Component } from "react";
import Plotly from "plotly.js-basic-dist";
import createPlotlyComponent from "react-plotly.js/factory";
import * as graph from "../assets/plotly_vars.json";

const Plot = createPlotlyComponent(Plotly);

class ThresholdAnalysis extends Component{
 render(){
    return(
        <div>
            <Plot data={graph.data} layout={figure.layout} />
        </div>
    );
 }
}

export default ThresholdAnalysis;

Sources:

如何导入json到TypeScript中SO回答 对于。ecmascript 6中如何导入json文件?

注意事项:在ecmascript6中如何导入json文件?

请注意,这是假设你的数据文件总是在你的 ../assets 目录。因此,如果你需要改变所呈现的数据,你就需要重新部署你的react应用。如果使用某种fetch来从远程服务器上检索数据,会更加动态。

© www.soinside.com 2019 - 2024. All rights reserved.