我正在尝试将Chartkick与Chart.js适配器一起使用,并试图制作一个简单的双轴图表,但是我的设置似乎都无效。我知道这只是一个格式化问题,但我觉得我尝试了所有事情都没有运气。
我的数据是这种格式,如您所见,我已经将yAxisID
添加到每个数据集。
@consultations = [{:name=>nil,
:data=>
[[Fri, 01 Dec 2017, 346],
[Mon, 01 Jan 2018, 99],
[Thu, 01 Feb 2018, 282],
[Thu, 01 Mar 2018, 267],
[Sun, 01 Apr 2018, 335],
:yAxisID=>"y"},
{:name=>"check with spouse",
:data=>
[[Fri, 01 Dec 2017, 0],
[Mon, 01 Jan 2018, 1],
[Thu, 01 Feb 2018, 9],
[Thu, 01 Mar 2018, 13],
[Sun, 01 Apr 2018, 19],
:yAxisID=>"y1"},
{:name=>"too busy",
:data=>
[[Fri, 01 Dec 2017, 0],
[Mon, 01 Jan 2018, 1],
[Thu, 01 Feb 2018, 0],
[Thu, 01 Mar 2018, 3],
[Sun, 01 Apr 2018, 1],
:yAxisID=>"y1"},
{:name=>"made post consultation",
:data=>
[[Fri, 01 Dec 2017, 0],
[Mon, 01 Jan 2018, 2],
[Thu, 01 Feb 2018, 4],
[Thu, 01 Mar 2018, 14],
[Sun, 01 Apr 2018, 12],
:yAxisID=>"y1"}
...
]
当我绘制图表时,legend
位置会更新,但是只有1个y轴,并且针对它绘制的所有数据均保持不变:
<%= line_chart @consultations, legend: true, library: {
legend: { position: 'top' },
scales: {
y: {
type: 'linear',
display: true,
position: 'left',
},
y1: {
type: 'linear',
display: true,
position: 'right',
}
}
}, id: 'consult-chart', adapter: 'chartjs' %>
您需要确保以正确的格式传递scales
。See this example of using Axis IDs in the docs.即scales
需要包含带有轴对象数组的yAxes
字段,并且每个轴对象都有一个id
字段,该字段与数据集中的ID之一匹配。
因此,您应该将代码更改为以下内容:
<%= line_chart @consultations, legend: true, library: {
legend: { position: 'top' },
scales: {
yAxes: [
{
id: 'y',
type: 'linear',
display: true,
position: 'left',
},
{
id: 'y1',
type: 'linear',
display: true,
position: 'right',
}
]
}
}, id: 'consult-chart', adapter: 'chartjs' %>