質問
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のをチェックしません。あなたが他のチャコの質問がある場合は、私はメーリングリストチャコユーザーにサインアップするお勧めします...