gpt4 book ai didi

javascript - chart.js 在折线图上切换 x/y 轴

转载 作者:数据小太阳 更新时间:2023-10-29 05:37:45 26 4
gpt4 key购买 nike

假设我有一个这样的折线图:https://jsfiddle.net/13fyhL4j/

HTML:

<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.1.3/Chart.js"></script>

<canvas id="myChart" width="400" height="400"></canvas>

JS:

var ctx = document.getElementById("myChart");
var yLabels = [0, 2, 3, 6, 7];
var xLabels = ['A', 'B', 'C', 'D', 'E'];

var myChart = new Chart(ctx, {
type: 'line',
data: {
labels: xLabels,
datasets: [
{
type: 'line',
label: 'Line',
data: yLabels,
fill: false,
}
]
},
options:{
scales: {
xAxes: [{
display: true,
scaleLabel: {
display: true,
labelString: 'x label'
},

}],
yAxes: [{
display: true,
scaleLabel: {
display: true,
labelString: 'y label'
},

}]
}
}
});

这里的 x 轴是类别刻度,y 轴是线性刻度。我需要交换轴,但是,我找不到如何制作 x 轴线性和 y 轴类别。

Image explaning situation

不仅需要更改轴值,还需要更改图表本身。

最佳答案

我还没有找到任何表明你可以用折线图来做的东西,但你可以用散点图来做。第一步是从 xAxesyAxes 中抽象出轴属性:

const xAxis = [{
/*type: 'time', time: { displayFormats: {} }, whatever*/
}];

const revenueAxis = [{
/*scaleLabel: {}, ticks: {}, whatever*/
}];

然后您可以根据您定义的任何条件来决定将哪个数据集放在哪个轴上:

let swapAxes = true;
const xValues = [1,2,3,4,5];
const yValues = [5,4,3,2,1];
let data = [];

const zipper = (a, b) => {
for (let i of a) data.push({x: a[i-1], y: b[i-1]});
return data;
}

data = condition ? zipper(yValues , xValues) : zipper(xValues, yValues );

您会注意到 zipper() 中的每个操作都会将一个具有值 xy 的对象推送到一个数组中。这就是 chartjs 接收数据(包含值 xy 的对象数组)的方式,因此请务必遵循该模式。

现在设置坐标轴:

const options = {
/*Whatever options you have*/,
scales: {
xAxes: condition ? yAxis : xAxis,
yAxes: condition ? xAxis : yAxis
}
}

现在,如果您将其放入代码中,您所要做的就是切换 condition 以切换轴。

关于javascript - chart.js 在折线图上切换 x/y 轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40234083/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com