5

Enthought's Chacoでは、TimeFormatterクラスは目盛りラベルの時間文字列をフォーマットするために使用されます。時間形式を指定する方法はありますか(のようなものtime.strftime())。

ソースコードは、月と日をアメリカンスタイル(MMDD)で表示するときにフォーマットをハードコードするようになりました。時間/日付形式のヒントが何らかの形でに渡されるように、柔軟性を追加したいと思います。TimeFormatter

私はこれを行うための良い方法を知りません(ソースコード自体(TimeFormatter._formats辞書)を変更する以外)

4

1 に答える 1

4

正直なところ、最も簡単な方法は、TimeFormatterの_formatsディクショナリにモンキーパッチを適用することです。

from enthought.chaco.scales.formatters import TimeFormatter
TimeFormatter._formats['days'] = ('%d/%m', '%d%a',)

これを行いたくない場合は、TimeFormatterをサブクラス化する必要があります。簡単だ。さらに厄介なのは、chaco.scalesパッケージが作成する既存のすべてのスケールシステムに、組み込みのTimeFormatterではなく新しいサブクラスを使用させることです。scales.time_scale.TimeScaleを見ると、コンストラクターで「formatter」キーワード引数を受け入れます。したがって、time_scale.pyの下部で、MDYScalesリストを作成するときに、独自のリストを作成する必要があります。

EuroMDYScales = [TimeScale(day_of_month=range(1,31,3), formatter=MyFormatter()),
             TimeScale(day_of_month=(1,8,15,22), formatter=MyFormatter()),
             TimeScale(day_of_month=(1,15), formatter=MyFormatter()),
             TimeScale(month_of_year=range(1,13), formatter=MyFormatter()),
             TimeScale(month_of_year=range(1,13,3), formatter=MyFormatter()),
             TimeScale(month_of_year=(1,7), formatter=MyFormatter()),
             TimeScale(month_of_year=(1,), formatter=MyFormatter())]

次に、ScalesTickGeneratorを作成するときに、これらのスケールをScaleSystemに渡す必要があります。

euro_scale_system = CalendarScaleSystem(*(HMSScales + EuroMDYScales))
tick_gen = ScalesTickGenerator(scale=euro_scale_system)

次に、軸を作成して、このティックジェネレータを指定します。

axis = PlotAxis(tick_generator = tick_gen)

HTH、申し訳ありませんが、これは約1か月の遅れです。StackOverflowはあまりチェックしていません。他にchacoに関する質問がある場合は、chaco-usersメーリングリストにサインアップすることをお勧めします...

于 2010-02-11T17:47:23.253 に答える