Python Chaco Exis Rótulos de tempo Formatação de tempo
Pergunta
No Chaco de Enthoughed, o TimeFormatter
A classe é usada para formatar a string de tempo dos rótulos dos ticks. Existe uma maneira de especificar o formato de tempo (algo como time.strftime()
).
O código-fonte agora codifica o formato ao exibir o mês e o dia do mês para o estilo americano (MMDD). Eu gostaria de adicionar alguma flexibilidade para que as dicas do formato de hora/data sejam passadas para o TimeFormatter
Eu não conheço nenhuma maneira legal de fazer isso (além de alterar o próprio código -fonte (TimeFormatter._formats
dicionário))
Solução
Honestamente, a maneira mais fácil será o Monkeypatch do dicionário de _formats do TimeFormatter:
from enthought.chaco.scales.formatters import TimeFormatter
TimeFormatter._formats['days'] = ('%d/%m', '%d%a',)
Se você não quiser fazer isso, precisará subclasse o TimeFormatter. Isso é fácil. O mais pesado é criar todos os sistemas de escala existentes que o pacote Chaco.scales cria usa sua nova subclasse em vez do tempo integrado. Se você olhar para o Scales.Time_Scale.Timescale, ele aceita um argumento de palavra -chave 'formatador' no construtor. Então, na parte inferior do time_scale.py, quando a lista de mdyscales é construída, você teria que criar o seu próprio:
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())]
Então, quando você cria o ScalestickGenerator, você precisa passar essas escalas para o sistema de escala:
euro_scale_system = CalendarScaleSystem(*(HMSScales + EuroMDYScales))
tick_gen = ScalesTickGenerator(scale=euro_scale_system)
Em seguida, você pode criar o eixo, dando -lhe este gerador de carrapatos:
axis = PlotAxis(tick_generator = tick_gen)
HTH, desculpe, isso é cerca de um mês de atraso. Eu realmente não verifico muito o StackOverflow. Se você tiver outras perguntas do Chaco, recomendo a inscrição na lista de discussão dos usuários do Chaco ...