我正在尝试在React中创建一个基本的折线图。据我所知,默认情况下,Chartjs将在悬停时显示数据点,但由于某种原因,图表上显示的每个数据点都不理想,因为会有数千个数据点。chart examle
据我所知,Chartjs中折线图的默认行为是在悬停时显示数据。我试过禁用工具提示如下:
options: {
tooltips: {
enabled: false
}
}
我也尝试直接从react-chartjs复制粘贴示例代码并插入我自己的数据,但我仍然得到所有数据点显示。我不知道该尝试什么,所以提前谢谢你。下面是我的组件:
import {
CategoryScale,
LineElement,
LinearScale,
PointElement,
TimeScale,
Legend,
Title,
Chart,
Tooltip
} from 'chart.js';
import './App.css';
import { Line } from 'react-chartjs-2';
import annotationPlugin from 'chartjs-plugin-annotation';
import ChartDataLabels from 'chartjs-plugin-datalabels';
import 'chartjs-adapter-date-fns';
import { useEffect, useState } from 'react';
Chart.register(
CategoryScale,
LinearScale,
PointElement,
LineElement,
Title,
annotationPlugin,
ChartDataLabels,
TimeScale,
Legend,
Tooltip
);
function App() {
const [ temps, setTemps ] = useState([]);
const [ times, setTimes ] = useState([]);
useEffect(() => {
async function fetchData () {
const dates = [];
const temps = [];
const url = 'data/device1/input_device_1_a.json';
const response = await fetch(url);
const data = await response.json();
for (let i = 0; i < data.length; i++) {
dates.push(data[i].time);
temps.push(data[i].tmp);
}
setTimes(dates);
setTemps(temps);
}
fetchData();
}, []);
const chartData = {
labels: times,
datasets: [
{
label: 'Device 1',
data: temps,
borderColor: 'rgb(255, 99, 132)',
backgroundColor: 'rgba(255, 99, 132, 0.5)',
},
],
}
const chartOptions = {
responsive: true,
plugins: {
legend: {
position: 'top',
},
title: {
display: true,
text: 'Chart.js Line Chart',
},
},
}
return (
<Line data={chartData} options={chartOptions} />
);
}
export default App;
1条答案
按热度按时间ffdz8vbo1#
在Chart.js的术语中,这里可能涉及到三个不同的概念:
如果您不特别需要数据标签,最简单的方法是不全局注册它。您仍然可以将其作为插件传递给需要它的特定图表。
如果你只想对某些点或某些数据集使用数据标签,那么你必须检查数据标签文档-它有很多选项,包括(为了完全灵活)scriptable options,它可以通过JavaScript回调应用你想要的任何逻辑。