Highcharts:在分组中是否可以在多个堆栈中存在单个系列

时间:2012-05-21 18:02:51

标签: javascript highcharts

我有一个堆叠的分组条形图,定义如下:

每个分组指的是一个单独的实体; 每个堆栈指的是该实体上的数据子集; 每个堆栈上都有4个条形。

事情是这样的:每个堆栈在组和条之间基本相同。即使分组中有5个堆叠,技术上仍然只有4个堆叠。然而,在Highcharts中,系列的名称与它的分组方式无关;如果我有50个名为“Bar 1”的系列,即使它们有不同的堆叠,我最终会在图例中找到50个“Bar 1”条目。

我想要的是每个条形图的单个图例/数据输入(例如“Bar 1”,“Bar 2”),而不是每个条形每个堆栈单个条目(例如“Bar 1 - Stack 1”,“Bar 1 - Stack 2“,”Bar 1 - Stack 3“,”Bar 2 - Stack 1“,ad nauseum)。

这可能吗?

(对于困惑:Highcharts在分组/堆叠方面有点奇怪。虽然'bar'是一组堆叠的条形

2 个答案:

答案 0 :(得分:3)

这不会真正帮助你获得你想要的最终结果,但这是我必须要做的。

设置图表中的颜色并每次重复它们。

colors: [
                '#3d3d3d' ,
                '#3d3d3d' ,
                '#008000' ,
                '#008000' ,
                '#86B201' ,
                '#86B201' ,
                '#97cb00' ,
                '#97cb00' ,
                '#f79646' ,
                '#f79646' 
    ] 

只要您按照所需的顺序输出图表,输出看起来就一样。

第二步是禁用系列一半的图例(重复的图例)。

e.g。系列看起来像什么:

{
    name: 'Locked',
    data: [1, 2, 3],
    stack: 'Subitem 1',
    showInLegend: false
}

这将导致重复的一半项目不在您的图例中显示。但是,这也意味着您将无法通过单击图例中的项目来隐藏/显示项目(如果您disable that functionality它不会混淆用户)。

希望有所帮助。

答案 1 :(得分:2)

解决方案1 ​​

您可以组合数据而不是堆栈,然后使用格式化程序列出Locked,Unlocked和Potential类别。这是通过将附加数据添加到数据点然后通过this.point.locked访问它来完成的。有关使用您的数据的示例,请参阅Updated jsfiddle

解决方案2

使用Donut chart显示您的数据。内部部分是系列标识符,外部环将是锁定,解锁和潜在的计数。

解决方案3

对于不是系列的图表启用或禁用legend。因此,您可以禁用图例。将堆栈中的每个系列设置为某种颜色,然后使用点的click事件获取系列ID并调用可以打开或关闭系列hide()的函数。在副标题中,您可以输入点击要隐藏的系列之类的内容。然后你还需要添加另一个按钮来重置/取消隐藏任何隐藏的系列。