Javascript 如何在Chart.js v2中使用两个Y轴?
我正在尝试使用chart.js创建一个包含两个数据集的折线图,每个数据集都有自己的Y比例/轴(一个在图的左侧,一个在图的右侧) 这是我的代码():Javascript 如何在Chart.js v2中使用两个Y轴?,javascript,browser,graph,chart.js,Javascript,Browser,Graph,Chart.js,我正在尝试使用chart.js创建一个包含两个数据集的折线图,每个数据集都有自己的Y比例/轴(一个在图的左侧,一个在图的右侧) 这是我的代码(): 但是,第二个轴不可见,并且第二个数据集仍与第一个数据集完全相同(0到100,而不是0到1)。我需要更改什么?对于ChartJs 2.x,只需要进行几项更改(看起来您已经尝试将2.x选项与我的fork中的多轴选项结合起来了?) yAxes字段需要位于scales对象中 yAxis由id而不是名称引用 对于缩放步长/大小,只需将这些选项包装在ticks
但是,第二个轴不可见,并且第二个数据集仍与第一个数据集完全相同(0到100,而不是0到1)。我需要更改什么?对于ChartJs 2.x,只需要进行几项更改(看起来您已经尝试将2.x选项与我的fork中的多轴选项结合起来了?)
字段需要位于yAxes
对象中scales
- yAxis由id而不是名称引用李>
- 对于缩放步长/大小,只需将这些选项包装在
对象中李>ticks
- 不需要
这在scalePositionLeft
位置
var canvas = document.getElementById('chart');
new Chart(canvas, {
type: 'line',
data: {
labels: ['1', '2', '3', '4', '5'],
datasets: [{
label: 'A',
yAxisID: 'A',
data: [100, 96, 84, 76, 69]
}, {
label: 'B',
yAxisID: 'B',
data: [1, 1, 1, 1, 0]
}]
},
options: {
scales: {
yAxes: [{
id: 'A',
type: 'linear',
position: 'left',
}, {
id: 'B',
type: 'linear',
position: 'right',
ticks: {
max: 1,
min: 0
}
}]
}
}
});
此溶液在react中起作用
// "chart.js": "^2.9.4"
// "react-chartjs-2": "^2.11.1"
const lineChartData = {
data: {
labels: ['1', '2', '3', '4', '5', '6'],
datasets: [
{
label: '# of Votes',
data: [12, 19, 3, 5, 2, 3],
fill: false,
backgroundColor: 'rgb(255, 99, 132)',
borderColor: 'rgba(255, 99, 132, 0.2)',
},
{
label: '# of Votes',
data: [19, 9, 2, 1, 1, 21],
fill: false,
backgroundColor: 'rgb(122, 99, 255)',
borderColor: 'rgba(102, 99, 255, 0.2)',
}
],
},
options: {
scales: {
yAxes: [
{
type: 'linear',
display: true,
position: 'left',
ticks: {
beginAtZero: true,
},
},
{
type: 'linear',
display: true,
position: 'left',
ticks: {
beginAtZero: true,
},
},
],
},
}
}
<Line
data={lineChartData.data}
options={lineChartData.options}
height={30}
width={80}
options={{ maintainAspectRatio: true }}
/>
/“chart.js”:“^2.9.4”
//“react-chartjs-2”:“^2.11.1”
常量lineChartData={
数据:{
标签:['1','2','3','4','5','6'],
数据集:[
{
标签:“#投票数”,
数据:[12,19,3,5,2,3],
填充:假,
背景颜色:“rgb(255,99,132)”,
边框颜色:“rgba(255,99,132,0.2)”,
},
{
标签:“#投票数”,
数据:[19,9,2,1,1,21],
填充:假,
背景颜色:“rgb(122,99,255)”,
边框颜色:“rgba(102,99,255,0.2)”,
}
],
},
选项:{
比例:{
雅克斯:[
{
类型:'线性',
显示:对,
位置:'左',
滴答声:{
贝吉纳泽罗:是的,
},
},
{
类型:'线性',
显示:对,
位置:'左',
滴答声:{
贝吉纳泽罗:是的,
},
},
],
},
}
}
当我打开你的小提琴时,两个轴都在那里,但是第二个数据集(B
)仍然没有缩放到右轴(B
),为什么不呢?很抱歉,我的打字错误应该是yAxisID
不是yAxesID
@Quince Hi Quince,但是如何用你的代码应用两种不同类型的图表(直线和条形)。谢谢你advance@Bcktr我相信你可以把类型改成酒吧。(或者你是在同一个图形中显示一条线和一条线吗?)目前不在计算机附近,但我觉得应该可以。你知道如何根据数据自动设置刻度(最小/最大)?它适用于左轴,默认情况下,右轴为0-1
// "chart.js": "^2.9.4"
// "react-chartjs-2": "^2.11.1"
const lineChartData = {
data: {
labels: ['1', '2', '3', '4', '5', '6'],
datasets: [
{
label: '# of Votes',
data: [12, 19, 3, 5, 2, 3],
fill: false,
backgroundColor: 'rgb(255, 99, 132)',
borderColor: 'rgba(255, 99, 132, 0.2)',
},
{
label: '# of Votes',
data: [19, 9, 2, 1, 1, 21],
fill: false,
backgroundColor: 'rgb(122, 99, 255)',
borderColor: 'rgba(102, 99, 255, 0.2)',
}
],
},
options: {
scales: {
yAxes: [
{
type: 'linear',
display: true,
position: 'left',
ticks: {
beginAtZero: true,
},
},
{
type: 'linear',
display: true,
position: 'left',
ticks: {
beginAtZero: true,
},
},
],
},
}
}
<Line
data={lineChartData.data}
options={lineChartData.options}
height={30}
width={80}
options={{ maintainAspectRatio: true }}
/>