我一直在通过axios从MongoDB服务器导入JSON文件。我能够成功地获取数据,但在图表上显示是不可能的。我已经看到了其他答案,似乎很容易将每个键列存储在一个单独的变量中,然后加载到labels
和data
对象,但这更优化和Chartjs也允许我们这种方法,因为它在其文档中列出,但我可能会出错的地方。在需要帮助,因为我需要为我的项目实现它
import React, { useState } from 'react';
import axios from 'axios';
import { useEffect } from 'react';
import {Bar, Line} from 'react-chartjs-2';
const URL = process.env.REACT_APP_SERVER_URL || 'http://localhost:5000/';
function ChartRoughPage(props) {
const [historicalData,setHistoricalData] = useState([]);
useEffect(()=>{
axios.get(URL+'stock/BLUEDART')
.then((response)=>{
if(response.status===200){
console.log(response.data)
setHistoricalData(response.data)
}
else{
console.log("ERROR: "+response.status+" , "+response.statusText)
}
})
.catch((err) => console.log.err);
},[]);
return (
<div>
<Line
data={{
datasets:[{
label:'Everyday Chart',
data : historicalData,
parsing:{
xAxisKey:'DATE',
yAxisKey:'CLOSE'
}
}]
}}
/>
</div>
);
}
export default ChartRoughPage;
输出:它只显示一个没有数据的图表
为了更好地理解,此处提供了文档的链接:https://www.chartjs.org/docs/latest/general/data-structures.html
我也尝试了以下的事情对我的代码:
- 尝试将其写入选项
...
<Line
data={{
datasets:[{
data : historicalData
}]
}}
options={{
parsing:{
xAxisKey:'Date',
yAxisKey:'Close'
}
}}
/>
...
- 提供静态数据,如:
historicalData = [{Date : '22-02-2000',Close: 56},{Date : '22-03-2000',Close: 656},{Date : '23-05-2000',Close: 6}]
另外,我从 MongoDB 以JSON形式发送的 documents 如下所示(所有值都可以通过键访问):
{"_id":{"$oid":"some-object-id"},"Date":"2019-01-03","Symbol":"20MICRONS","Series":"EQ","Prev Close":{"$numberDouble":"44.05"},"Open":{"$numberDouble":"44.05"},"High":{"$numberDouble":"44.1"},"Low":{"$numberDouble":"43.1"},"Last":{"$numberDouble":"43.4"},"Close":{"$numberDouble":"43.45"},"VWAP":{"$numberDouble":"43.48"},"Volume":{"$numberInt":"15741"},"Turnover":{"$numberDouble":"68447485000.0"},"Trades":{"$numberDouble":"368.0"},"Deliverable Volume":{"$numberInt":"9487"},"%Deliverble":{"$numberDouble":"0.6027"}}
会感激你的帮助!
1条答案
按热度按时间wbgh16ku1#
问题似乎出在X轴的类型上,因为如果您提供
画得很好
因此,您最好了解如何在x轴上显示时间
我知道我迟到了,但我必须回答这个问题)