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))

Foi útil?

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 ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top