直流图改变图例顺序
dc charts change legend order
我有一个带有图例的堆叠图。我想在不更改图表本身的情况下更改图例的顺序。即当前图例按以下顺序显示
最少
N/A
大多数
我想显示如下
大多数
N/A
最少
mostLeastLikelyChart
.width(leastMostLikelyChartWidth)
.height(chartHeight)
.margins(margins1)
.dimension(mostLeastLikelyDim)
.gap(10)
.ordinalColors(['#f7a35c','#7cb5ec','#08A4BA'])
.group(mostLeastLikelyGrp, "Least", function (d) {
return d.value.lst.count;
})
.stack(mostLeastLikelyGrp, "N/A", function (d) {
return d.value.na.count;
})
.stack(mostLeastLikelyGrp, "Most", function (d) {
return d.value.most.count;
})
.x(d3.scale.ordinal().domain(mostLeastLikelyDim))
.xUnits(dc.units.ordinal)
.renderHorizontalGridLines(true)
.elasticX(true)
.legend(dc.legend().x(leastMostLikelyChartWidth*0.80).y(0).itemHeight(13).gap(5).legendText(function(d){return d.name}))
哇,这是一个最烦人的默认设置!难怪你想改变这一点。
完全倒过来,因为堆叠的顺序是从下到上:
幸运的是 dc.js 有一个漏洞抽象,所以重写这样的东西真的很容易。有一个函数 chart.legendables()
由图例内部调用,以检索要在图例中绘制的项目。
您可以像这样覆盖它:
dc.override(chart, 'legendables', function() {
var items = chart._legendables();
return items.reverse();
});
呸!好多了!
我已将此添加到 the stacked bar example。感谢您指出这一点,Farah,也许我们可以为此做一个选项,并以另一种方式默认为堆叠图表。
dc 版本 4+
在 dc@4 及更高版本中,图表使用 ES6 classes 并且 dc.override
消失了。您可以创建一个派生的 class 并使用 super
,或者直接覆盖该方法:
const super_legendables = chart.legendables;
chart.legendables = function() {
const items = super_legendables.call(this);
return items.reverse();
}
这已记录在案 in the dc@4 upgrade guide。
我有一个带有图例的堆叠图。我想在不更改图表本身的情况下更改图例的顺序。即当前图例按以下顺序显示
最少
N/A
大多数
我想显示如下
大多数
N/A
最少
mostLeastLikelyChart
.width(leastMostLikelyChartWidth)
.height(chartHeight)
.margins(margins1)
.dimension(mostLeastLikelyDim)
.gap(10)
.ordinalColors(['#f7a35c','#7cb5ec','#08A4BA'])
.group(mostLeastLikelyGrp, "Least", function (d) {
return d.value.lst.count;
})
.stack(mostLeastLikelyGrp, "N/A", function (d) {
return d.value.na.count;
})
.stack(mostLeastLikelyGrp, "Most", function (d) {
return d.value.most.count;
})
.x(d3.scale.ordinal().domain(mostLeastLikelyDim))
.xUnits(dc.units.ordinal)
.renderHorizontalGridLines(true)
.elasticX(true)
.legend(dc.legend().x(leastMostLikelyChartWidth*0.80).y(0).itemHeight(13).gap(5).legendText(function(d){return d.name}))
哇,这是一个最烦人的默认设置!难怪你想改变这一点。
完全倒过来,因为堆叠的顺序是从下到上:
幸运的是 dc.js 有一个漏洞抽象,所以重写这样的东西真的很容易。有一个函数 chart.legendables()
由图例内部调用,以检索要在图例中绘制的项目。
您可以像这样覆盖它:
dc.override(chart, 'legendables', function() {
var items = chart._legendables();
return items.reverse();
});
呸!好多了!
我已将此添加到 the stacked bar example。感谢您指出这一点,Farah,也许我们可以为此做一个选项,并以另一种方式默认为堆叠图表。
dc 版本 4+
在 dc@4 及更高版本中,图表使用 ES6 classes 并且 dc.override
消失了。您可以创建一个派生的 class 并使用 super
,或者直接覆盖该方法:
const super_legendables = chart.legendables;
chart.legendables = function() {
const items = super_legendables.call(this);
return items.reverse();
}
这已记录在案 in the dc@4 upgrade guide。