如何在charts.js中的特定条形值上对堆积条形图进行排序

迭戈

我使用了在堆栈溢出时在这里找到的脚本来对堆积条形图进行排序。唯一的事情是堆叠的条形按总条形的总和排序。我一直在努力使用下面的脚本,但找不到一种方法来根据堆栈的一个值而不是堆叠条的总和对堆叠条进行排序。这是我正在使用的代码:

Chart.plugins.register({    
    id:"p2",                                                                                                                                                         
    datasets: [],                                                                                                                                                                    
    getData(labels, datasets) {                                                                                                                                                      
        const sum = [];                                                                                                                                                            
        for (i = 0; i < datasets[0].length; i++) {                                                                                                                                   
            sum.push({                                                                                                                                                               
                label: labels[i],                                                                                                                                                    
                data: datasets.map(e => e[i]),                                                                                                                                       
                    get sum() { // ES6 - getter                                                                                                                                      
                        return this.data.reduce((a, b) => a + b);                                                                                                                    
                    }                                                                                                                                                                
            });                                                                                                                                                                      
        }                                                                                                                                                                            
        return sum;                                                                                                                                                                  
    },                                                                                                                                                                               
    beforeUpdate(chart) {                                                                                                                                                              
        chart.data.datasets.forEach((dataset, datasetIndex) => {                                                                                                                     
            this.datasets.push(dataset.data);                                                                                                                                        
        });                                                                                                                                                                          
        const data_store = this.getData(chart.data.labels, this.datasets).sort((a,b) => b.sum - a.sum);                                                                              

        data_store.forEach((d,i) => {                                                                                                                                                
            chart.data.labels[i] = d.label;                                                                                                                                          
            d.data.forEach((v, vi) => {                                                                                                                                              
                chart.data.datasets[vi].data[i] = v;                                                                                                                                 
            });                                                                                                                                                                      
        });                                                                                                                                                                          
    }                                                                                                                                                                                
});   
阿里尔

排序函数当前使用总和:

.sort((a,b) => b.sum - a.sum)

所以用你想要排序的数据替换它:

.sort((a,b) => b.data[i] - a.data[i])

i您想要的行在哪里

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何按降序对堆积条形图进行排序?

如何按特定类别对堆积条形图进行排序?

Chart.js/Ng-charts 堆积条形图 - 在条形图上显示百分比,但在工具提示上显示实际值

如何对特定颜色的条形图进行排序?

当条形按 ggplotly 中的值排序时,如何在条形图工具提示上显示变量名称

如何在R中绘制堆积条形图?

如何在matplotlib中制作堆积的条形图?

如何对矩阵的条形图进行排序?

如何对堆积的条形图进行动画处理?

pandas:如何对堆积条形图进行分组?

如何在react-charts中更改条形图中条形图的宽度?

堆积条形图:如何更改值/类别的顺序?

堆叠堆积的条形图:如何控制每个堆积中条形的顺序

如何更改amchart中堆积的条形图的颜色

如何更改 R 中堆积条形图的顺序?

如何在dc.js中呈现时间序列/分类堆积条形图,过滤堆栈和条形图

如何更改Google Charts API中堆积的条形图的部分颜色?

如何水平显示堆积的条形图?

如何缩放ggplot堆积的条形图

如何创建堆积条形图?

如何在plotly3.6中对条形图进行排序?

如何在R中从最高到最低对条形图进行排序?(ggplot2)

如何在matplotlib中绘制带有+ ve和-ve混合值的100%堆积条形图?

如何在条形图的条形图中显示值?

d3.js条形图排序:无法确定如何对x轴标签和条形进行排序

如何创建条形图,将值与Excel中辅助轴上的一组值进行比较

如何在堆积的条形图ggplot2上组织百分比值

如何按月份名称对条形图进行排序?

如何按物种总数对这个条形图进行排序?