8

正当な開示-私はjavascriptにひどいですが、学ぼうとしています!

次のようなエントリを含む配列があります。

[1349013600] => 232

キーはUNIXタイムスタンプであり、値はその日の売上高の$です。私は現在、これらをマルチバーチャートにグラフ化しています。これはうまく機能しています。

問題は私のx軸です。これは現在次のように定義されています。

chart.xAxis
.tickFormat(d3.format(',f'));

UNIXタイムスタンプをx軸ラベルおよびホバーツールチップに対する直線intとして出力します。DMYまたは同様の人間が読める形式の日付インジケーターとして出力するようにしてみたいと思います。

私が見つけた最も近いものは、このコードのビットです:

chart.xAxis.tickFormat(function(d) {
       var dx = testdata[0].values[d] && testdata[0].values[d].x || 0;
   return d3.time.format('%x')(new Date(dx))
 });

しかし、私はそれが何をしているのかを理解するのに苦労していて、私の特定のチャートに実装することはできません。現在のコードは次のようになります。

nv.addGraph(function() {
var chart = nv.models.multiBarChart()
            .stacked(true)

chart.xAxis
    .tickFormat(d3.format(',f'));

chart.yAxis
    .tickFormat(function(d) { return '$' + d3.format(',f')(d) });

d3.select('#chart1 svg')
    .datum(test_data2)
  .transition().duration(500).call(chart);

nv.utils.windowResize(chart.update);

return chart;
});

誰かがそれを機能させる方法を説明できますか、そしてもっと重要なことに、なぜですか?ガイダンスに感謝します!

4

2 に答える 2

16

バウンティを開くとすぐに問題を解決しました(d'oh!)

これが私のために働いたものです

.tickFormat(function(d){return d3.time.format('%d-%b')(new Date(d));})

トリックは、これが軸が作成された後にnvd3のデータを再フォーマットすることでした

于 2013-01-22T22:55:40.723 に答える
4

JavaScript のタイムスタンプはミリ秒単位であるため、Unix スタンプを使用する前に 1000 を掛ける必要があります。

于 2012-12-20T05:37:57.423 に答える