无法为 apexcharts 获取正确格式的数据
Cannot get data formatted correctly for apexcharts
我从 API
收到这样的数据
{
"Bob Knight": 30774.72000002,
"Samuel Herman": 10310.61000004,
"Lucie Perry": 26308.41,
"Andreas Smith": 8960.189999999999,
"Frederic Smith": 2029.5000000599998,
}
我正在尝试在我的 React 应用程序中使用 apex 图表在条形图中显示它,但是我似乎无法以正确的方式格式化数据以使 apex 显示任何内容。我试过像这样在 javascript 中格式化:
{
{x: "Bob Knight", y:"30774.720002"},
...
}
这似乎是文档所建议的,但它没有呈现任何内容。以下是我的组件的有用部分
constructor(props) {
super(props);
this.state = {
options: {
chart: {
id: "basic-bar"
},
xaxis: {
type: 'category'
}
},
values: []
}
}
componentDidUpdate(prevProps) {
if (!equal(this.props.selectedDate, prevProps.selectedDate))
{
var m = moment(this.props.selectedDate).format("M");
var y = moment(this.props.selectedDate).format("YYYY");
axios.get('http://localhost:8080/opportunity/owner/' + y + '/' + m)
.then(res => {
values = res.data;
this.setState({
values
})
})
.catch(console.log)
}
}
render(
<Chart series = {this.state.values} type ='bar' options ={this.state.options}/>
const obj = {
"Bob Knight": 30774.72000002,
"Samuel Herman": 10310.61000004,
"Lucie Perry": 26308.41,
"Andreas Smith": 8960.189999999999,
"Frederic Smith": 2029.5000000599998,
}
const arr = Object.entries(obj).map(x => ({
'x': x[0],
'y': x[1]
}))
console.log(arr)
检查这个 codesandbox,我实现了一个简单的条形图,data
是 y 轴值,xaxis
中的 categories
是 x 轴标签。所以从对象中你可以像这样把它们分开
const obj = {
"Bob Knight": 30774.72000002,
"Samuel Herman": 10310.61000004,
"Lucie Perry": 26308.41,
"Andreas Smith": 8960.189999999999,
"Frederic Smith": 2029.5000000599998
};
let categories = Object.keys(obj);
let data = Object.keys(obj).map(k => obj[k]);
执行此操作后,将类别和数据设置为这样的状态
this.setState({
values: [...this.state.series, { data }],
options: { ...this.state.options, xaxis: { categories } }
});
您必须将类别添加到 options
对象中的 xaxis
并将数据添加到 values
数组
我从 API
收到这样的数据{
"Bob Knight": 30774.72000002,
"Samuel Herman": 10310.61000004,
"Lucie Perry": 26308.41,
"Andreas Smith": 8960.189999999999,
"Frederic Smith": 2029.5000000599998,
}
我正在尝试在我的 React 应用程序中使用 apex 图表在条形图中显示它,但是我似乎无法以正确的方式格式化数据以使 apex 显示任何内容。我试过像这样在 javascript 中格式化:
{
{x: "Bob Knight", y:"30774.720002"},
...
}
这似乎是文档所建议的,但它没有呈现任何内容。以下是我的组件的有用部分
constructor(props) {
super(props);
this.state = {
options: {
chart: {
id: "basic-bar"
},
xaxis: {
type: 'category'
}
},
values: []
}
}
componentDidUpdate(prevProps) {
if (!equal(this.props.selectedDate, prevProps.selectedDate))
{
var m = moment(this.props.selectedDate).format("M");
var y = moment(this.props.selectedDate).format("YYYY");
axios.get('http://localhost:8080/opportunity/owner/' + y + '/' + m)
.then(res => {
values = res.data;
this.setState({
values
})
})
.catch(console.log)
}
}
render(
<Chart series = {this.state.values} type ='bar' options ={this.state.options}/>
const obj = {
"Bob Knight": 30774.72000002,
"Samuel Herman": 10310.61000004,
"Lucie Perry": 26308.41,
"Andreas Smith": 8960.189999999999,
"Frederic Smith": 2029.5000000599998,
}
const arr = Object.entries(obj).map(x => ({
'x': x[0],
'y': x[1]
}))
console.log(arr)
检查这个 codesandbox,我实现了一个简单的条形图,data
是 y 轴值,xaxis
中的 categories
是 x 轴标签。所以从对象中你可以像这样把它们分开
const obj = {
"Bob Knight": 30774.72000002,
"Samuel Herman": 10310.61000004,
"Lucie Perry": 26308.41,
"Andreas Smith": 8960.189999999999,
"Frederic Smith": 2029.5000000599998
};
let categories = Object.keys(obj);
let data = Object.keys(obj).map(k => obj[k]);
执行此操作后,将类别和数据设置为这样的状态
this.setState({
values: [...this.state.series, { data }],
options: { ...this.state.options, xaxis: { categories } }
});
您必须将类别添加到 options
对象中的 xaxis
并将数据添加到 values
数组