使用 Chartkick 添加注释

Add annotations with Chartkick

我想为我的时间序列图表添加注释。 来自 Google 的文档: data.addColumn({type:'string', role:'annotation'});

如何通过 Chartkick 传递这些列属性?

<%= line_chart [{name: 'annotations', data: annotations_array},{name: 'numbers as a time series', data: 'numeric_array'}] %>

尝试这样的事情(未测试):

<%= line_chart TABLE.group(XXX).where(XXX), library: {name: 'annotations', data: annotations_array, name: 'numbers as a time series', data: 'numeric_array', type:'string', role:'annotation'} %>

我向 chartkick.js 存储库创建了一个拉取请求以添加您描述的功能。

https://github.com/ankane/chartkick.js/pull/58

这仅适用于 JS 库 (chartkick.js),但通过使用此拉取请求中修改后的 chartkick.js 并传入,可以在 ruby 库中使用该方法role 值(certaintyannotation 等)到 library 选项。

var data = [..., [Sat Mar 05 2016 17:13:22 GMT-0800 (PST), 1, false, "cool annotation"]];
new Chartkick.LineChart("chart-1", data, {
            "library": 
              {"role":["certainty", "annotation"]}
            });

如果您使用的是 chartjs-plugin-annotation.js: https://github.com/chartjs/chartjs-plugin-annotation,那么您需要使用 library 选项将选项从 Chartkick 传递到底层图表提供程序,例如Chart.js.

这是我用带标签的垂直线注释图表的示例:

<%=
  line_chart profit_chart_path(staff), xtitle: 'Day', ytitle: 'Profit',
    library: {
      annotation: {
        annotations: [
          {
            type: 'line',
            mode: 'vertical',
            scaleID: 'x-axis-0',
            value: 'May 2018',
            label: {
              content: 'My Vertical Line',
              enabled: true
            }
          }
        ]
      }
    }
%>

例如,如果您想要一条带注释的水平线,例如数值,请改用这些值:

mode: 'horizontal',
scaleID: 'y-axis-0',
value: 20,

确保您已先注册插件!

import ChartAnnotationsPlugin from 'chartjs-plugin-annotation';
Chart.plugins.register(ChartAnnotationsPlugin);