D3.js NVD3工具提示仅显示类别

D3.js NVD3工具提示仅显示类别,d3.js,nvd3.js,D3.js,Nvd3.js,我正在使用堆叠条形图。如何使工具提示仅显示数据的类别,而不是确切的值,或者可以在条形图的末尾显示类别而不是值(就像设置了.showValue(true),但设置了类别一样) 更新 我已经找到了一个解决方案,可以在工具提示中只显示类别(键),但它涉及到对源代码的修改,看起来不太好。 我认为我想做的事情的正确名称是显示每个条的标签。我无法使用此代码使其工作: chart.xAxis. .axisLabel(attrs.xAxisLabel) .tickForm

我正在使用堆叠条形图。如何使工具提示仅显示数据的类别,而不是确切的值,或者可以在条形图的末尾显示类别而不是值(就像设置了
.showValue(true)
,但设置了类别一样)

更新

我已经找到了一个解决方案,可以在工具提示中只显示类别(键),但它涉及到对源代码的修改,看起来不太好。 我认为我想做的事情的正确名称是显示每个条的标签。我无法使用此代码使其工作:

chart.xAxis.
          .axisLabel(attrs.xAxisLabel)
          .tickFormat(d3.format('r'));
因为它给了我一个错误,
attrs
没有定义。我有主意了。但我不能让它工作

更新

具体来说:


我想在垂直轴上显示
round\u 1\u 2
,而不仅仅是在我悬停时。

更新:工作小提琴:

NVD3代码生成错误时仍然存在一些问题。。。他们的网站上也有问题的例子。。。但是,现在我在这里提到的东西是可以证明的

要自定义工具提示而不修改其代码,请在代码中尝试以下操作:

chart.tooltip(function(key, x, y, e, graph) {
    return '<h3>' + key + '</h3>' +
           '<p>' +  y + ' on ' + x + '</p>';
});
如果查看他们的源代码,您可以找到公开所有内容以进行修改的部分:

//============================================================
// Expose Public Variables
//------------------------------------------------------------

// expose chart's sub-components
chart.dispatch = dispatch;
chart.multibar = multibar;
chart.legend = legend;
chart.xAxis = xAxis;
chart.yAxis = yAxis;
...
chart.reduceXTicks= function(_) {
  if (!arguments.length) return reduceXTicks;
  reduceXTicks = _;
  return chart;
};

chart.rotateLabels = function(_) {
  if (!arguments.length) return rotateLabels;
  rotateLabels = _;
  return chart;
}

chart.tooltip = function(_) {
  if (!arguments.length) return tooltip;
  tooltip = _;
  return chart;
};

Mike Bostock在NVD3遵循的“面向可重用图表”中描述了一种设计模式,因此熟悉它可能会有好处

NVD3在这方面不是很灵活——修改源代码可能是最好的方式。但是没有办法显示x轴标签?不知道你想做什么。它还没有显示轴标签吗?是的,它没有显示轴标签(垂直轴),并且我找不到启用工具提示的方法您的解决方案工作得非常好。虽然我认为我们有不同版本的nvd3,因为我找不到
reduceTexticks
方法。我引用的是他们网站上的最新版本。现在在他们网站上的那个有问题,但我在一个项目中使用了几个星期前我下载的NVD3副本。查看小提琴的工作示例。我不确定他们什么时候添加了这些选项,大约一年前我用的是NVD3,它不支持这些东西。但是,好消息是我能够非常无缝地升级版本。
//============================================================
// Expose Public Variables
//------------------------------------------------------------

// expose chart's sub-components
chart.dispatch = dispatch;
chart.multibar = multibar;
chart.legend = legend;
chart.xAxis = xAxis;
chart.yAxis = yAxis;
...
chart.reduceXTicks= function(_) {
  if (!arguments.length) return reduceXTicks;
  reduceXTicks = _;
  return chart;
};

chart.rotateLabels = function(_) {
  if (!arguments.length) return rotateLabels;
  rotateLabels = _;
  return chart;
}

chart.tooltip = function(_) {
  if (!arguments.length) return tooltip;
  tooltip = _;
  return chart;
};