我有下面的代码,使用chart.js来生成一个线图。Y轴表示价格值,而X轴表示日期值。我希望X轴上的日期只显示年份,但我仍然希望将鼠标悬停在数据点上时,工具提示中显示完整的日期。
const datesArray = ["1 May 2023", "2 May 2023", "3 May 2023", "4 May 2023", "5 May 2023"];
const valuesArray = [107.71, 105.98, 106.12, 105.21, 106.215];
const Chart = ({ width }) => (
<ChartDiv style={{ width }} className='cursor-auto'>
<PriceGraph
chartData={{ data: valuesArray, labels: datesArray }}
chartColour={'#218B82'}
chartFillColour={'#F2FFFF'}
/>
</ChartDiv>
);
import React from 'react';
import { Line } from 'react-chartjs-2';
import { Chart, registerables } from 'chart.js';
import 'chartjs-adapter-date-fns';
Chart.register(...registerables);
const PriceGraph = ({ chartData, chartColour, chartFillColour }) => {
const options = {
scales: {
x: {
ticks: {
display: true,
callback: (value, index, values) => {
const tickDate = new Date(value);
return tickDate.getFullYear().toString();
}
}
},
y: {
beginAtZero: true,
ticks: {
display: true,
}
}
}
}
const data = {
labels: chartData.labels,
datasets: [
{
data: chartData.data,
backgroundColor: chartFillColour,
borderColor: chartColour,
fill: true,
}
]
}
return <Line data={chartData.labels ? data : null} options={options}/>;
}
export default PriceGraph
当我运行我的代码时,工具提示反映了正确的日期,但是X轴上的每个刻度都显示“1970”。我希望这是一个问题,数据被输入到我的回调函数或不适当的使用回调函数。
回顾chart.js文档,有一个指示,我应该使用类型:时间,并应用格式。当我按如下所示修改代码时,我得到一个空白图表。
scales: {
x: {
type: 'time',
time: {
unit: 'year',
tooltipFormat: 'dd MMM yyyy'
},
ticks: {
display: true,
}
},
有什么建议我应该如何去格式化我的X轴?
1条答案
按热度按时间4uqofj5v1#
由于某些原因,回调函数中的参数没有按预期填充。理想情况下,第一个参数值应该是将要打印的值。
解决方法是使用现有数据和回调参数中的索引。你可以试试下面的代码。