2016-10-01 5 views
1

凡例付きの積み上げチャートがあります。チャート自体を変えずに伝説の順序を変えたい。つまり、現在、レジェンドは順序以下に表示され

最小
N/
ほとんど


ほとんど
N/
最小

DCチャートは凡例を変更します

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})) 
+1

人々があなたを助けることができるように、これまでに試したことのコードを共有してください。 – Nobita

+0

@Gordon訂正ありがとうございます。あなたはこの問題の解決法をお勧めしますか? –

+0

うん、それになって... – Gordon

答えて

1
を次のように私はそれを表示したい

うわー、それは最も迷惑なデフォルトです!あなたがこれを変更したいのも不思議ではありません。

スタックの順番は下から一番上にあるので、それは、逆方向に完全です:

wrong legend order

幸いにもdc.jsは漏れやすい抽象化を持っているので、それはこのようなものを上書きするのはとても簡単です。凡例で描画するアイテムを取得するために凡例によって内部的に呼び出される関数chart.legendables()があります。

あなたはこのようにそれを上書きすることができます。

 dc.override(chart, 'legendables', function() { 
      var items = chart._legendables(); 
      return items.reverse(); 
     }); 

ふう!ずっといい! fixed legend order

これをthe stacked bar exampleに追加しました。これを指摘してくれてありがとう、ファー、おそらく我々はこれのためのオプションを作ることができ、積み上げられたチャートのためにそれをデフォルトにすることができます。

+0

ありがとうゴードン。それは魔法のように機能します。私は、DCチャートには凡例の位置を変更するオプションが必要だと思います。 –

+0

これは "順序"ではなく "位置"です。 - legend.x()と.y()は位置を設定します。しかし、ええ、私は同意します。この回答が役に立ちましたら、それを受け入れてください(緑色のチェックマーク)。 – Gordon

関連する問題