بيثون تشاكو محور تسميات الوقت تنسيق الوقت

StackOverflow https://stackoverflow.com/questions/2173632

  •  24-09-2019
  •  | 
  •  

سؤال

في chaco's chaco ، TimeFormatter يستخدم الفصل لتنسيق السلسلة الزمنية من ملصقات القراد. هل هناك طريقة لتحديد تنسيق الوقت (شيء مثل time.strftime()).

يشمل الرمز المصدر الآن تنسيقه عند عرض شهر ويوم الشهر إلى النمط الأمريكي (MMDD). أرغب في إضافة بعض المرونة بحيث يتم نقل تلميحات تنسيق الوقت/التاريخ بطريقة ما إلى TimeFormatter

لا أعرف أي طريقة لطيفة للقيام بذلك (بخلاف تغيير الكود المصدر نفسه (TimeFormatter._formats قاموس))

هل كانت مفيدة؟

المحلول

بصراحة ، ستكون أسهل طريقة هي Monkeypatch The TimeFormatter's _Formats Dictionary:

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

إذا كنت لا ترغب في القيام بذلك ، فأنت بحاجة إلى إجراء فئة فرعية. هذا سهل. الأمر الأكثر تعقيدًا هو جعل جميع أنظمة المقياس الحالية التي تنشئها حزمة Chaco.scales تستخدم الفئة الفرعية الجديدة بدلاً من الشكل المدمج. إذا نظرت إلى Scales.time_scale.timescale ، فإنه يقبل وسيطة للكلمة الرئيسية "التنسيقية" في المنشئ. لذلك ، في أسفل 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 ، آسف هذا حوالي شهر تأخر. أنا لا أتحقق حقًا من stackoverflow. إذا كان لديك أسئلة أخرى في Chaco ، فإنني أوصي بالتسجيل في القائمة البريدية للمستخدمين ...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top