2016-10-03 55 views
1

私はいくつかの棒グラフにdc.js(2.0.0-beta.32)を使用しています。より小さい値の棒をほぼゼロ高さにして、確実にクリックすることはほとんど不可能です。dc.js barChart - x軸のダニとラベルをクリック

バーの高さに非線形尺度を使用することで、何らかの形でこれを緩和することができますが、これはプロジェクト全体のデータとグラフにある他の制約のためにはあまり役に立ちません。

.label()でラベルを追加することは、レイアウトのために実行できません。

私は何かを明らかに行方不明ですがない限り、私はX軸目盛りを作るための方法を参照することはできませんが(.label()経由で追加の棒の上ではなく、ラベル)自体がクリック可能なラベル:の選択を行うどのような方法があります(bar +関連の目盛りラベルのように)?

私が発見した最も近い解決策はこれです: https://stackoverflow.com/a/30560518/550077 40-50細いバーが含まれて私のチャートのレイアウトで再び本当に使えるしていないが(それは小さな改善だが、それはクリックすることで可能性としてクリックがまだのように信頼できません

+1

良いアイデア。これは単純ではない2つのことがあります。軸はdc.jsではなくd3によって描画されるため、他のライブラリによって作成された要素を選択する必要があります。また、1つのバーにつき1つのチックがあることを順序チャートだけで保証します。 – Gordon

答えて

1

xドメインをデータにマップする方法がわかっている場合は、独自のクリックハンドラを軸に追加できます。

例えば、the filtering exampleに、あなたは次のようにハンドラを追加することができます。

spendHistChart.select('.axis.x') 
    .selectAll('.tick text') 
    .on('click', function(d) { 
     spendHistChart.replaceFilter(new dc.filters.RangedFilter(d, d+1)); 
     spendHistChart.redrawGroup(); 
    }); 

としてはon the user groupを指摘し、彼らはによってdc.cssで無効になっているので、あなたはまた、ダニのためのpointer-eventsを有効にする必要がありますデフォルト。

上記はリニアスケールのチャートを想定しています。順序尺度を扱っている場合は、.replaceFilter(d)のように単純なものですが、xドメインから実際のデータへのマッピングによって決まります。

関連する問題