2011-07-06 6 views
6

10k以上の時間を表示するグラフを作成します。すべてが、私が持っている唯一の問題は、私は時間の表示方法を書式設定したいと思っています。Google Charts Api用のカスタムフォーマッタを作成します

現在、時刻は秒を表す数字として表示されます。たとえば、30分の実行は10800秒になります。 Googleによって提供されるフォーマッタは、たくさんのものをカバーしますが、私が提供するものには本当に満足していません。

http://code.google.com/apis/chart/interactive/docs/reference.html#formatters

悲しいことに、独自のフォーマッタを実装する方法についての情報はありません。フォーマッタを拡張する可能性はありますか、実装する必要のあるインタフェースはありますか?

私が最初に行うことは、30:00.00(30分、0秒、0ミリ秒)のような素敵な時間に10800番の数字を解析することです。 これは既にパターンフォーマッタでは可能ですが、計算が含まれているため、パターンフォーマッタでこれを実装する方法がわからないので、どのように表示されないのでしょうか。

ありがとうございました。 ジョニー

+0

ここでは必要ではありませんでしたが、カスタムフォーマッタを作成する上で大きな回答があります[ここ](http://stackoverflow.com/questions/7286368/how-to-write-a-custom-formatter-for- google-datatables-for-on-on-visualization) – PerryW

答えて

3

カスタムパターンでDateFormatを使用してください。例えば:

google.visualization.DateFormat({pattern: "mm:ss.SSS"}); 

の注意点は、これが時刻JSのDateオブジェクトのを表示するということですので、あなたは、JSの日付など、あなたの実行時間を提供する必要があります。したがって、データがサンプリングされた実際の時刻を指定するか、サンプル時間をミリ秒単位で各サンプル点の時間である

new Date(new Date('Jan 01 2000').getTime() + sampleTime) 

...:あなたは自分の運転の開始からの相対時間を表示したい場合は、あなたはこのような何かを行うことができます。 (これはちょうど2000年1月1日午前0時からのミリ秒単位で時間を設定するので、時/分/秒にあなたの実行時間が反映されます)

+0

私は注釈付きタイムチャートを使用しているので、可能なy値については非常に奇妙です。私はy値として日付の値を使用することができなかったので、YUI 3 Chart Apiに切り替えました。 – Johnnycube

+0

最後のビットは素晴らしいハックです!独創性のために+1。 –

+0

'new Date(new Date( 'Jan 01 2000')。getTime()+ sampleTime)'をjsonとしてどのように渡しますか?私のアプリケーションでは、その行は文字列として解釈するので、型の不一致が生じます。 – Noz

0

ジオカルで同様の問題が発生し、 hh:mm:ssとします。それを管理することはできませんでしたが、私はそれをmmにすることができました:受け入れられたss

私は小数点にmm.ss.例えば200秒の3時20分私は3.20としてこれを標識し、そのようチャートに値を渡され、その後geochartに私が使用する数値フォーマッタを使用している:デフォルトの小数点以下の桁数、小数点フォーマッタとして

var formatter = new google.visualization.NumberFormat({ 
    decimalSymbol: ':' 
}); 

されます2それは3:20として現われました。

関連する問題