D3.js dc.js piechart图例:仅显示前5名

D3.js dc.js piechart图例:仅显示前5名,d3.js,dc.js,crossfilter,D3.js,Dc.js,Crossfilter,我正在生成一个饼图(确切地说是甜甜圈图),它有大约50个项目,但前5个项目占图表的95%。当我显示图例信息时,它与图表重叠,因为有许多图例项。我想知道是否有一个选项可以将图例显示限制在前5项 我看不到任何选项将图例显示限制为前5名或前10名。您可以随时修改dc.js库本身,在图例混合中执行以下操作: dc.legend = function () { ... //START MODIFICATION var _maxItems; _legend.maxItems = function(maxI

我正在生成一个饼图(确切地说是甜甜圈图),它有大约50个项目,但前5个项目占图表的95%。当我显示图例信息时,它与图表重叠,因为有许多图例项。我想知道是否有一个选项可以将图例显示限制在前5项


我看不到任何选项将图例显示限制为前5名或前10名。

您可以随时修改dc.js库本身,在图例混合中执行以下操作:

dc.legend = function () {
...
//START MODIFICATION
var _maxItems;
_legend.maxItems = function(maxItems) {
    _maxItems = maxItems;
    return _legend;
};
//END MODIFICATION
...
_legend.render = function () {
    _parent.svg().select('g.dc-legend').remove();
    _g = _parent.svg().append('g')
        .attr('class', 'dc-legend')
        .attr('transform', 'translate(' + _x + ',' + _y + ')');
    var legendables = _parent.legendables();

    //START MODIFICATION
    if (_maxItems) {
        legendables = legendables.slice(0, _maxItems);
    }
    //END MODIFICATION
...
}

我想我们假设你会给饼图本身加上帽子,而不仅仅是从图例中排除小的饼图。我有一个dc.dataTable,它以表格格式显示项目。我无法对饼图本身进行封顶,因为这样会从我的dataTable中删除条目;它不应该影响任何其他图表。通过封顶,您是指使用.data()回调吗?不,我是指使用饼图继承的。它只需要把最小的垃圾箱放在一个“其他”的垃圾箱里。它不会影响其他图表。看。