我有存储在 MongoDB 中的数据,如下所示:(以下 1 个文档的示例)
{_id: XXX,
project: 'Project ABC',
amount: 300,
expenseIncurredDate: 2022-03-15T08:24:46.000+00:00
}
我试图在堆积条形图中显示我的数据,其中 x 轴是年月,y 轴是金额。在每年的每个月内,不同的项目可能会产生若干费用。
我正在尝试实现类似的目标,除了 x 轴应显示年月(例如 2021 年 1 月)。每个项目应该用一种颜色代表每个年月。
我正在使用 Chart.js。下面是我的 Bar 组件。
import { Bar } from "react-chartjs-2";
import { Chart as ChartJS } from "chart.js/auto";
import React from "react";
const BarChart = ({ chartData }) => {
const options = {
responsive: true,
legend: {
display: false,
},
type: "bar",
scales: {
xAxes: [
{
stacked: true,
},
],
yAxes: [
{
stacked: true,
},
],
},
};
return <Bar data={chartData} options={options} />;
};
export default BarChart;
我正在另一个组件中处理我的数据:
let datasets = [];
function random_bg_color() {
var x = Math.floor(Math.random() * 256);
var y = 100 + Math.floor(Math.random() * 256);
var z = 50 + Math.floor(Math.random() * 256);
var bgColor = "rgb(" + x + "," + y + "," + z + ")";
return bgColor;
}
let amounts = myExpenses.map((expense) => expense.amount);
myExpenses.forEach((expense) => {
const expenseObj = {
label: expense.project,
stack: 1,
borderWidth: 1,
backgroundColor: random_bg_color(),
data: amounts,
};
datasets.push(expenseObj);
});
let data = {
labels: myExpenses.map((expense) =>
moment(expense.expenseDate, "DD-MM-YYYY")
),
datasets: datasets,
};
我知道这不起作用,因为它没有按正确的顺序/按年和月分组返回金额。
let amounts = myExpenses.map((expense) => expense.amount);
我很难按年月对金额进行分组。非常感谢您对此的任何帮助,谢谢。