NVD3.js:带有两个 y 轴的堆叠和分组条形图

Orb*_*tum 3 d3.js nvd3.js

我正在使用NVD3.js并想创建以下图表: 在此处输入图片说明

正如你所看到的-条堆叠双轴分组由x轴

使用multiChart我得到:

在此处输入图片说明

它是堆叠的,两个轴,但不按x 轴分组

也许我需要使用不同的图表类型 - 不是multiChart,但我没有找到两个 y 轴所在的条形图。

1)我怎样才能实现这一目标NVD3.js

2)如果不能在 中完成NVD3.js,那么我可以正确集成哪个解决方案?

谢谢!

Ame*_*aBR 5

引用他们的网站,NVD3 Javascript 库是“尝试构建可重复使用的图表和图表组件”。为了强调图表的可重用性,它的创建者做出了几个关键决定:

  • 他们专注于实施标准图表设计(折线图、条形图、散点图),但以灵活的交互方式实施。

  • 他们对所有图都使用了相同的数据结构要求:

    • 主数据数组包含多个数据系列,每个数据系列代表数据的一个逻辑分组;

    • 每个系列都是包含两个或更多变量的单个数据对象的数组。

  • 所有图形都具有相似的样式并重用了重要的代码段。

NVD3 库允许您创建分组条形图堆叠条形图,甚至是在两者之间交互动画的图表

调整该图表以创建堆叠分组条形图并不是一项简单的任务,部分原因是数据结构会有所不同。您将需要一个三级数据结构 ( series > sub-series > datapoints, 表示groups > stacks > bars) 而不是series > datapointsNVD3 使用的两级( ) 结构。

然而,一切都没有丢失。NVD3 建立在d3 Javascript 库之上。D3 更加灵活和开放;它没有定义特定的图表类型,它定义了一种操作网页以使其与您的数据匹配的方法。您可以使用它来创建可以使用 HTML 或 SVG 绘制的任何类型的图表。但当然,这意味着要做更多的工作,因为您必须明确创建图形的所有部分,并自己做出所有设计决策!

强烈建议,如果您想使用 d3,请从教程列表或其中一本介绍性书籍中的基础知识开始。但是,您还需要查看示例库,从中您会发现以下特别有趣的图表:

一旦您熟悉了在 d3 中构建图表,您可能想打开 NVD3 源代码,看看是否可以借用他们的一些可重用代码组件(当然,请务必遵守他们的许可条款。但是,作为初学者,我不建议这样做——它有很多代码,并且使用了很多复杂的技术将所有部分组合在一起。