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.