有没有办法在C3.js刻度标签中放置链接?

otm*_*ger 2 javascript c3.js

我有一个带有反向X / Y轴的条形图。这是我的代码和输出:

    var myData = {};
    myData.x = 'x';
    myData.xFormat = "%Y-%m-%d";
    myData.type = 'bar';
    myX = app.reportsCollection.countedByDay.plotData.X;
    myY = app.reportsCollection.countedByDay.plotData.Y;
    myX.splice(0,0,'x');
    myY.splice(0,0,'Nuevos Reportes');
    myData.columns = [];
    myData.columns.push(myX);
      //http://stackoverflow.com/a/586189/1862909
    myData.columns.push(myY);
    var chart = c3.generate({
      bindto: elementID,
      data: myData,
      size: {
        height: 300
      },
      bar: {
        width: {
            ratio: 0.5 // this makes bar width 50% of length between ticks
        }
        // or
        //width: 100 // this makes bar width 100px
      },
      axis: {
        x: {
          type: 'timeseries',
          tick: {
                  format: "%b-%d"
              }
        },

      },
      legend: {
        show: false
      }
    });
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我需要链接到X刻度标签上的特定页面。在示例中,Otra应为超链接。

我试图将链接作为文本包括在myX变量中,但是没有用。

任何想法如何做到这一点?

mgr*_*ham 5

并非开箱即用,c3会将刻度标签呈现为tspan元素,并使用d3的.text函数添加它们,因此尝试<A>在c3的tick函数中将元素模板化为文本是行不通的。

在这里看看Mark接受的答案(不是我的答案)- 在图c3.js-d3.js上放一个图标,该图标显示了如何用其他元素替换c3中的刻度标签。更改现有文本并用几个A标记将其包裹起来,包括适当的href并将其重新添加为html并不难。

实际上,tspans可以直接包含A标签,因此可以这样进行-http: //jsfiddle.net/k9Dbf/745/。很难确定它应该是xlink:href而不只是href ...

小提琴的重要一点:

d3.selectAll('.c3-axis-x .tick tspan')
  .each(function(d,i){
    // augment tick contents with link
    var self = d3.select(this);
    var text = self.text();
    self.html("<A xlink:href='"+arrayOfLinks[i]+"'>"+text+"</A>");
});
Run Code Online (Sandbox Code Playgroud)

编辑:

解决方案2:您现在也可以完全跳过A元素,并在tspan上使用单击侦听器,尽管它现在需要一些CSS才能提供光标指示符

d3.selectAll('.c3-axis-x .tick tspan')
  .on("click", function(d,i){
    window.open(arrayOfLinks[i], "_blank");
});

.c3-axis-x .tick tspan:hover {
  cursor: pointer;
}
Run Code Online (Sandbox Code Playgroud)