如何使用 Chart.js(圆环图)旋转到数据集的中心
How to rotate to center of a dataset using Chart.js (Doughnut chart)
我正在使用最新版本的 Chart.js 并使用圆环图类型。我对如何找到数据集的中心并旋转到它有疑问。
当我点击一些数据标签时,我需要数据集的中心转到 startPosition 0。
我知道 Chart.js 有一个 rotation option,但我不知道如何找到要旋转到它的数据集的中心。
请记住,数据集是动态的。所以每次我点击每个数据标签时,我都必须找到它们的中心。
这是我的图表代码:
const data = {
datasets: [
{
label: 'My First Dataset',
data: [300, 50, 100], // this will be dynamic
backgroundColor: ['rgb(255, 99, 132)', 'rgb(54, 162, 235)', 'rgb(255, 205, 86)'],
hoverOffset: 4,
},
],
};
const config = {
type: 'doughnut' as ChartType,
data,
options: {
responsive: true,
plugins: {
legend: {
position: 'bottom' as any,
},
title: {
display: true,
text: 'Chart.js Doughnut Chart',
},
},
},
};
这是我需要的:
这里是数据集元数据:
我该怎么做?
您需要设置旋转参数:
const data = {
datasets: [
{
label: 'My First Dataset',
data: [300, 50, 100],
backgroundColor: ['rgb(255, 99, 132)', 'rgb(54, 162, 235)', 'rgb(255, 205, 86)'],
hoverOffset: 4,
rotation: -90,
},
],
};
如果你想让最大的馅饼的中心在顶部,那么你需要执行这个公式:-(choosenData/2)/(sumOfData)*360
。在你的情况下 -300/2/450*360
.
如果你想申请每个饼,那么你需要改变数据的顺序(数据元素,backougrndColor等),并作为第一个值设置居中。
数据元素 50 的示例:
const data = {
datasets: [
{
label: 'My First Dataset',
data: [50, 100, 300],
backgroundColor: ['rgb(54, 162, 235)', 'rgb(255, 205, 86)', 'rgb(255, 99, 132)'],
hoverOffset: 4,
rotation: -25/450*360,
},
],
};
我正在使用最新版本的 Chart.js 并使用圆环图类型。我对如何找到数据集的中心并旋转到它有疑问。
当我点击一些数据标签时,我需要数据集的中心转到 startPosition 0。
我知道 Chart.js 有一个 rotation option,但我不知道如何找到要旋转到它的数据集的中心。
请记住,数据集是动态的。所以每次我点击每个数据标签时,我都必须找到它们的中心。
这是我的图表代码:
const data = {
datasets: [
{
label: 'My First Dataset',
data: [300, 50, 100], // this will be dynamic
backgroundColor: ['rgb(255, 99, 132)', 'rgb(54, 162, 235)', 'rgb(255, 205, 86)'],
hoverOffset: 4,
},
],
};
const config = {
type: 'doughnut' as ChartType,
data,
options: {
responsive: true,
plugins: {
legend: {
position: 'bottom' as any,
},
title: {
display: true,
text: 'Chart.js Doughnut Chart',
},
},
},
};
这是我需要的:
这里是数据集元数据:
我该怎么做?
您需要设置旋转参数:
const data = {
datasets: [
{
label: 'My First Dataset',
data: [300, 50, 100],
backgroundColor: ['rgb(255, 99, 132)', 'rgb(54, 162, 235)', 'rgb(255, 205, 86)'],
hoverOffset: 4,
rotation: -90,
},
],
};
如果你想让最大的馅饼的中心在顶部,那么你需要执行这个公式:-(choosenData/2)/(sumOfData)*360
。在你的情况下 -300/2/450*360
.
如果你想申请每个饼,那么你需要改变数据的顺序(数据元素,backougrndColor等),并作为第一个值设置居中。
数据元素 50 的示例:
const data = {
datasets: [
{
label: 'My First Dataset',
data: [50, 100, 300],
backgroundColor: ['rgb(54, 162, 235)', 'rgb(255, 205, 86)', 'rgb(255, 99, 132)'],
hoverOffset: 4,
rotation: -25/450*360,
},
],
};