Controlando barras Largura em matplotlib com dados por mês
-
23-08-2019 - |
Pergunta
Quando eu traçar dados amostrados por mês, com bares, sua largura é muito fina. Se eu definir X eixo localizador menor a DayLocator (), eu posso ver as barras de largura é ajustada para 1 dia, mas eu gostaria que eles para preencher um mês inteiro.
Eu tentei definir o menor carrapatos localizador para MonthLocator () sem efeito.
[editar]
Talvez um exemplo vai ser mais explícito, aqui está um exemplo ipython -pylab
do que quero dizer:
x = [datetime.datetime(2008, 1, 1, 0, 0),
datetime.datetime(2008, 2, 1, 0, 0),
datetime.datetime(2008, 3, 1, 0, 0),
datetime.datetime(2008, 4, 1, 0, 0),
datetime.datetime(2008, 5, 1, 0, 0),
datetime.datetime(2008, 6, 1, 0, 0),
datetime.datetime(2008, 7, 1, 0, 0),
datetime.datetime(2008, 8, 1, 0, 0),
datetime.datetime(2008, 9, 1, 0, 0),
datetime.datetime(2008, 10, 1, 0, 0),
datetime.datetime(2008, 11, 1, 0, 0),
datetime.datetime(2008, 12, 1, 0, 0)]
y = cos(numpy.arange(12) * 2)
bar(x, y)
Isto dá 12 2 pixels barras largas, gostaria que eles sejam mais ampla e estender de mês para mês.
Solução
Basta usar o argumento width
palavra-chave:
bar(x, y, width=30)
Ou, uma vez que diferentes meses têm números diferentes de dias, para torná-lo uma boa aparência você pode usar uma seqüência:
bar(x, y, width=[(x[j+1]-x[j]).days for j in range(len(x)-1)] + [30])
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow