BOMBOLOM.COM

(python) Personalizar Eixo de Gráfico no ReportLab

Este é um post de José Lopes.

Se estiver a utilizar o ReportLab para gerar os seus gráficos, pode necessitar de personalizar o eixo dos labels para mostrar somente algumas entradas, por forma a obter um gráfico mais limpo e fácil de ler.

Neste post proponho uma solução.

Se criar uma função auxiliar como esta:

(1)def axisCostumized (axis, space):
       axis_costumized = []
       k = 0
       for entry in axis:
(2)        if k == 0:
               axis_costumized.append(entry)
           else:
(3)            if k == len(axis)-1:
                   axis_costumized.append(entry)
               else:
(4)                if (k/space) > (k//space):
                       axis_costumized.append("")
                   else:
                       axis_costumized.append(entry)
           k += 1

       return axis_costumized

Vai chamá-la antes de gerar o seu gráfico, sem necessitar de alterações às suas funções de gráficos. Ela vai só formatar a lista com os nomes (labels) do gráfico.

Explicando o código:

(1) A função aceita dois argumentos, o axis que é a lista com os labels do eixo do gráfico, e space é um inteiro que terá de definir e que representa o espaço entre labels visíveis.
(2) Aqui garantimos que o primeiro label vai estar sempre visível.
(3) Aqui é o mesmo para o último label do eixo.
(4) Aqui verificamos se a entrada (o label) deve ou não se incluída, por verificação de que a posição da entrada dividida pelo número inteiro definido por space tem resto zero.

Como pode verificar, o comprimento da lista do eixo personalizado é o mesmo que a lista original. Os nomes "escondidos" são substituídos por uma string vazia.

11.12.2007 | Ler mais | Comentários | Tags ,

Voltar à Página principal | Made with PyBlosxom