第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 dc.js 中訂購條形圖標(biāo)簽(再次)

在 dc.js 中訂購條形圖標(biāo)簽(再次)

梵蒂岡之花 2021-06-09 09:08:51
我知道關(guān)于 SO 的特定主題有很多問題,但似乎沒有一個解決方案適用于我的情況。這是我的數(shù)據(jù):var theData = [{  "value": "190.79",  "age_days": "22",  "criteria": "FX"}, {  "value": "18.43",  "age_days": "22",  "criteria": "FX"}, {...}]我將數(shù)據(jù)放入桶中:var getAge = (d) => {  if ((d.age_days) <= 7) {    return (["1w", "2w", "1m", "3m", "6m", "1y", "All"]);  } else if ((d.age_days) <= 14) {    return (["2w", "1m", "3m", "6m", "1y", "All"]);  } else if ((d.age_days) <= 30) {    return (["1m", "3m", "6m", "1y", "All"]);  } else if ((d.age_days) <= 90) {    return (["3m", "6m", "1y", "All"]);  } else if ((d.age_days) <= 180) {    return (["6m", "1y", "All"]);  } else if ((d.age_days) <= 360) {    return (["1y", "All"]);  } else {    return (["All"]);  }};var ndx = crossfilter(theData);var dims = {};var groups = {};dims.age = ndx.dimension(getAge,true);groups.age = {};groups.age.valueSum = dims.age.group().reduceSum((d) => d.value);然后我嘗試使用假組方法對組進行排序:var sort_group = (source_group, order) => {     return {        all: () => {            let g = source_group.all();            let map = {};            g.forEach(function (kv) {                map[kv.key] = kv.value;            });            return order                .filter((k) => map.hasOwnProperty(k))                .map((k) => {                    return {key: k, value: map[k]}                });        }    };};var the_order = ["1w", "2w", "1m", "3m", "6m", "1y", "All"];var the_sorted_age_group = sort_group(groups.age.valueSum, the_order);然后我創(chuàng)建barChart使用theAgeChart  .height(200)  .width(400)  .dimension(dims.age)  .group(the_sorted_age_group)  .valueAccessor((d) => d.value)  .x(d3.scaleBand())  .xUnits(dc.units.ordinal);但它仍然使用默認排序出來:我創(chuàng)建了一個包含所有內(nèi)容的jsFiddle here。如何按照我希望對條形進行排序來對它們進行排序?
查看完整描述

1 回答

?
繁花不似錦

TA貢獻1851條經(jīng)驗 獲得超4個贊

當(dāng)elasticX為true或者沒有設(shè)置x尺度域時,坐標(biāo)網(wǎng)格mixin會生成X域


        if (_chart.elasticX() || _x.domain().length === 0) {

            _x.domain(_chart._ordinalXDomain());

        }


這完全有道理,但它總是在生成域時對域進行排序:


_chart._ordinalXDomain = function () {

    var groups = _chart._computeOrderedGroups(_chart.data());

    return groups.map(_chart.keyAccessor());

};


我想我們可以考慮在ordering為空時不對域進行排序。


無論如何,一種解決方法是自己設(shè)置域:


.x(d3.scaleBand().domain(the_order))

您不需要為條形圖對組進行排序。(對于折線圖,組順序必須與刻度域一致,但對于條形圖則無關(guān)緊要。)


使用域集,這也有效:


.group(groups.age.valueSum)

http://img1.sycdn.imooc.com//60c31df60001174e05910318.jpg

我想這個故事的寓意是自動生成圖表很復(fù)雜。大多數(shù)情況下,確實希望對 X 域進行排序,但是讓用戶提供自己的排序的最佳方法是什么?

我不會說這是最好的方法,但有一種方法可以讓它發(fā)揮作用。


查看完整回答
反對 回復(fù) 2021-06-11
  • 1 回答
  • 0 關(guān)注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號