我找到了解决方案。对于 Chart.js 2.1.x 及更高版本(Chart.js 1.x.x 不起作用),您可以使用自定义选项应用数据集,如下所示:
var options = {
scales:{
xAxes: [{ stacked: true }],
yAxes: [{ stacked: true }]
}
};
var myBarChart = new Chart(ctx, {
type: 'bar',
data: data,
options: options
});
我正在使用来自this source 的图表 js 2.2.1 gem。第 3-35 行的辅助方法提供了有关如何创建堆叠条形图的见解。不知何故,它没有从给定方法输入数据的选项。所以让我们重写辅助方法:
def chart2_bar id=nil, size=nil, data={}, options={}
html = "<canvas id=\"myChart_bar\" width=\"#{size[:width]}px\" height=\"#{size[:height]}px\"></canvas>".html_safe
script = javascript_tag do
<<-END.html_safe
var ctx = document.getElementById("myChart_bar");
var data = "#{data.to_json}";
var options = "#{options.to_json}";
var myBarChart = new Chart(ctx, {
type: 'bar',
data: data,
options: options
});
END
end
return html + script
end
数据必须是json格式,否则会被当成字符串格式,所以报错。您可以像往常一样创建一个实例变量并传递给辅助方法。
不会说这是完美的解决方案,但它可以很好地生成 html 和 pdf(使用 wicked-pdf)。