質問

Enthoughtのチャコでは、TimeFormatterクラスはダニの時間文字列をフォーマットするために使用されています ラベル。時刻形式(time.strftime()のようなもの)を指定する方法があります。

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

私はこれを行うに任意の良い方法を知ってはいけない(ソースコード自体を変更する以外の(TimeFormatter._formats辞書))

役に立ちましたか?

解決

正直なところ、最も簡単な方法は、TimeFormatterの_formatsをモンキーパッチすることになるだろう辞書ます:

from enthought.chaco.scales.formatters import TimeFormatter
TimeFormatter._formats['days'] = ('%d/%m', '%d%a',)
あなたがこれを行うにはしたくない場合は、

は、その後、あなたはTimeFormatterをサブクラス化する必要があります。簡単だ。どのような面倒はchaco.scalesパッケージではなく、内蔵TimeFormatterよりもあなたの新しいサブクラスを使用して作成すること、既存のすべての規模のシステムを作っています。あなたはscales.time_scale.TimeScaleを見れば、それはコンストラクタで「フォーマッタ」キーワード引数を受け入れます。 MDYScalesリストが構築されているときに、time_scale.pyの下部に、あなた自身を作成する必要があると思います:

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、申し訳ありませんが、これは月の遅れについてです。私は本当に非常にStackOverflowのをチェックしません。あなたが他のチャコの質問がある場合は、私はメーリングリストチャコユーザーにサインアップするお勧めします...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top