gpt4 book ai didi

javascript - 使用react-d3绘制图表

转载 作者:行者123 更新时间:2023-12-03 03:37:15 26 4
gpt4 key购买 nike

我正在尝试使用 react-d3-components 制作一些数据的直方图。我的代码是这样的

import React, { Component } from 'react';
import * as d3 from 'd3';
import * as ReactD3 from 'react-d3-components';
import propTypes from 'prop-types';
var axios=require('axios');
var BarChart=ReactD3.BarChart;

class App extends Component {
constructor(props){
super(props);
this.state={
data:[],
label:'',
values:[],
x:'',
y:''
}
}

componentDidMount(){
this.loadData();
}

loadData(){

var me=this;
axios({
method:'GET',
url:'https://www.alphavantage.co/query?function=TIME_SERIES_MONTHLY&symbol=SPY&apikey=2QEL3WC4KITIBISR',
}).then(function(response){

var values=[];
var data=[];
Object.keys(response.data['Monthly Time Series']).forEach(function(k){
var y=response.data['Monthly Time Series'][k]["1. open"];

me.setState({
label:k,
x:k,
y:y
})


})
values.push({"x":me.state.x,"y":me.state.y});
data.push({"label":me.state.x,"values":values});
me.setState({
data:data
})
console.log(me.state.data);

}).catch(function(error){
console.log(error);
})
}


render() {

return (
<div>
<BarChart data={this.state.data} width={100} height={100}/>
</div>
)
}
}

App.propTypes={
values:React.PropTypes.array

}

export default App;

使用上面的代码,我收到此错误 error

我所指的文档是this

console.log(me.state.data)中数据的值是这个[{…}]

0
:
label
:
"2000-02-29"
values
:
Array(1)
0
:
{x: "2000-02-29", y: "139.8000"}
length
:
1
__proto__
:
Array(0)
__proto__
:
Object
length
:
1
__proto__
:
Array(0)

最佳答案

根据图表需要操作数据格式似乎存在问题。我还没有测试过,但这应该有效。

class App extends Component {
state = {
label: 'Monthly Dates',
values: []
};

componentDidMount() {
this.loadData();
}

loadData() {
axios({
method: 'GET',
url: 'https://www.alphavantage.co/query?function=TIME_SERIES_MONTHLY&symbol=SPY&apikey=2QEL3WC4KITIBISR'
})
.then(function(response) {
const values = [];
if (response && response.data && response.data['Monthly Time Series']) {
Object.keys(response.data['Monthly Time Series']).forEach((keys) => {
if (keys) {
const pointValue = {
x: String(keys),
y: Number(response.data['Monthly Time Series'][keys]['1. open'])
}
values.push(pointValue);
}
});
this.setState({values});
}
})
.catch(function(error) {
console.log(error);
});
}

getGraphData() {
const { label, values } = this.state;
return [{ label, values }]
}

renderGraph() {
if (this.state.values && this.state.values.length) {
return (
<BarChart
data={this.getGraphData()}
width={1000}
height={400}
margin={{top: 10, bottom: 50, left: 50, right: 10}}
/>
);
}
return '';
}

render() {
return (
<div>
{this.renderGraph()}
</div>
)
}
}

更新:在数据出现之前不应渲染条形图。由于 BarChart 需要如下所示的有效数据格式。

[{
label: 'somethingA',
values: [{x: 'SomethingA', y: 10}, {x: 'SomethingB', y: 4}, {x: 'SomethingC', y: 3}]
}];

关于javascript - 使用react-d3绘制图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45798443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com