Como posso calcular automaticamente a escala e os intervalos do eixo?

Alguém sabe onde posso encontrar um algoritmo que dê um conjunto de valores (datas) para um eixo que possa calcular uma escala razoável e um intervalo de carrapato?

Author: Donotalo, 2008-10-25

2 answers

O intervalo entre carrapatos dependerá da sua área de visualização. Terá de ter em conta a largura do seu gráfico (presumo que o tempo esteja no eixo dos X) e a largura de um texto de data no seu tipo de letra seleccionado, a fim de obter uma boa escala.

O algoritmo básico vai fazer algo assim.

  • digitalize a lista de datas para encontrar os valores mínimo e máximo.
  • divida a largura do Gráfico pela largura do texto da data (isto pode ser feito uma vez com o resultado armazenado em uma variável se * ambas * larguras são constantes). Este passo será mais fácil se você usar um tipo de letra de Largura Fixa e um formato de data MM-DD-AAAA. Se você usar um tipo de letra de largura variável e um formato de data onde você soletrar o nome do mês, você vai precisar adicionar um preenchimento extra para se certificar de que cada texto de data é a mesma largura. Note que eu disse enchimento extra. Mesmo que você use um formato de data fixa, você vai querer enchê-lo com pelo menos um espaço para evitar crowding. Vou chamar a isto valor. 'carrapatos' porque é exatamente quantos carrapatos em seu eixo irá caber com base na largura do seu gráfico.
  • Calcule quantos dias estão entre as suas datas mínimas e máximas (inclusive). Como você faz isso vai depender do idioma que você está usando. Espero que você tenha boas datas e implementações de calendário para voltar. Vou chamar a isto dias de valor.
  • calcular o intervalo da carraça com a fórmula " intervalo = dias / (carraças - 1)".
  • determinar quais os dias em que ocorre a carraça intervalos adicionando 'intervalo' à sua data mínima até atingir a sua data máxima. Mais uma vez, Isso dependerá do idioma que você usar.
 6
Author: Bill the Lizard, 2008-10-25 12:56:46