2017-01-23 3 views
0

I участок битрейта во время с следующей функциейВремя в оси х Matplotlib перекрываться

#!/usr/bin/python3 
import matplotlib.pyplot as plt 
import datetime 

def plotBitrate(time,bitrate,filename): 
    time = [datetime.datetime.strptime(elem, '%H:%M:%S.%f') for elem in time] 

    plt.plot(time,bitrate) 
    plt.xlabel('Time') 
    plt.ylabel('Bitrate kbits/s') 

    plt.autofmt_xdate() 
    plt.savefig(filename, dpi = 300) 
    plt.close() 

данные выглядят следующим образом

Time  bitrate 
00:00:00.95 33528.2 
00:00:01.47 30013.2 
00:00:01.99 26238.5 

Но на этот раз результаты формата в перекрывающиеся клещи в участке

enter image description here

Я попытался отформатировать ось x так, чтобы она была с plt.autofmt_xdate() но это не сработало, я получаю AttributeError: модуль matplotlib.pyplot не имеет атрибута autofmt_xdate.

Можно ли отформатировать ось x так, чтобы тики не перекрывались?

С наилучшими пожеланиями

+0

Существует несколько способов, чтобы тики не перекрывались: (a) Используйте меньший размер шрифта, (b) используйте меньше тиков (т. Е. Показываете максимум N тиков), (c) изменяете ориентацию метки метки (например, по вертикали). В каком направлении вы хотите поехать сюда? – ImportanceOfBeingErnest

+0

Когда я меняю ориентацию на ex plt.xticks (время, вращение = 45), формат времени теряется и отображается неверно. Может быть, меньшее количество тиков или максимальное количество тиков - лучшее решение? – S4M1R

+0

Вы пробовали 'plt.gcf(). Autofmt_xdate()'? – ImportanceOfBeingErnest

ответ

1

autofmt_xdate() действительно хороший способ предотвращения перекрывающихся меток. Однако у pyplot этот метод отсутствует, вместо этого это метод figure.

Поэтому

plt.gcf().autofmt_xdate() 

будет делать эту работу.

Смежные вопросы