57

チャートのy軸範囲を1〜100に設定しようとしています。

APIドキュメントを参照し、ここに表示されているaxis.tickValuesを使用して可能な解決策を見つけました https://github.com/mbostock/d3/wiki/SVG-Axes#wiki-tickValues

ただし、このオプションの使用は機能しません。上記のaxis.tickSizeの下にリンクされているドキュメントページをさらに読むと、次の行が見つかりました

終了ティックは、関連するスケールのドメイン範囲によって決定され、ティックラインではなく、生成されたパスドメインの一部です。

したがって、範囲の最小値と最大値を設定することは、軸オプションでは実行できません。

範囲を指定できる場所について何かアイデアはありますか?

4

6 に答える 6

80

解決策を見つけました。

.forceY([0,100])チャートのインスタンス化に追加すると、軸は配列で指定された範囲になります。

ここの例からhttp://nvd3.org/livecode/#codemirrorNav

.forceY([0,100])チャート変数への追加は機能します。

于 2012-08-01T22:42:20.740 に答える
33

名前が示すように、これは配列内の値をyドメインに追加し、yドメインをに設定しません[0,100]。したがって、これをに設定し[0,100]、データのドメインをに設定-10すると110、ドメインはになります[-10,110]

[0,100]データが大きくてもドメインを大きくしたい場合は、使用できますchart.yDomain([0,100])...ただし、通常はドメインまたはデータを含める必要があるため、の代わりにchart.forceYを使用することを強くお勧めしchart.yDomainます。ご覧のとおり、forceYの最も一般的な使用法の1つはforceY([0])、ドメイン内で常に0にすることです。

関数が実際に何をしているのか、そしてarboc7を理解するのに役立つことを願っています。これは、範囲をデータセットよりも小さくするのに機能しない理由を説明するはずです。

于 2012-09-06T05:17:15.503 に答える
11

積み上げ面グラフの場合、.forceY([0,100])は機能しません。代わりに使用してください.yDomain([0,100])

于 2013-09-11T11:30:28.183 に答える
8

y-domain積み上げ面グラフの(表示する数値の範囲)を設定することを意味する場合、これは私にとってはうまくいきます:

nv.models.stackedAreaChart()
  .x(function(d) {...})
  .y(function(d) {...})
  .yDomain([0, maxY])
...
于 2013-12-12T19:41:25.027 に答える
1

同様の問題があり、yAxisのyScaleでドメインを明示的に定義することで解決しました。

var yscale = d3.scale.linear()
                     .domain([0,100])
                     .range([250, 0]);
var yAxis = d3.svg.axis()
                  .scale(yscale);
于 2016-02-22T21:32:47.173 に答える
0

私は次のように試しました:

chart.forceY([DataMin, DataMax]);

DataminとDatamaxは配列から計算する必要があります。また、フィルターが適用されるときに軸ポイントを動的に調整するには、次のようなフィルターのクリックイベントをカスタム処理する必要があります。

$('g.nv-series').click(function() {
   //Calculate DataMin, DataMax from the data array                    
   chart.forceY([DataMin, DataMax]);                        
});

したがって、グラフはフィルターが適用されるたびに調整されます。

于 2016-01-17T20:18:40.633 に答える