У меня есть набор данных с датами, которые иногда содержат разницу в секундах.

У меня дата-время (по оси x) отображается вертикально в надежде, что текст не будет перекрывать друг друга, но, судя по всему, они сложены практически друг на друга. Я думаю, это потому, что у меня есть данные, которые различаются в секундах, а даты могут варьироваться в разные дни, поэтому ось x очень плотная. Другая проблема заключается в том, что точки данных на графике также перекрываются, потому что расстояние между ними очень мало.

Вот пример набора (уже преобразованный с использованием date2num()). Он отличается в секундах, но охватывает несколько дней:

dates = [734949.584699074, 734959.4604050926, 734959.4888773148, 734949.5844791667, 734959.037025463, 734959.0425810185, 734959.0522916666, 734959.4607060185, 734959.4891435185, 734949.5819444444, 734959.0348726852, 734959.0390393519, 734959.0432175926, 734959.0515393518, 734959.4864814815, 734949.5842476852, 734959.0367476852, 734959.038125, 734959.0423032407, 734959.052025463, 734959.4603819444, 734959.4895023148, 734949.5819791667, 734959.0348958333, 734959.0390740741, 734959.0432407408, 734959.0515856481, 734959.4579976852, 734959.487175926]

values =  [39, 68, 27, 57, 22, 33, 70, 19, 60, 53, 52, 33, 87, 63, 78, 34, 26, 42, 24, 97, 20, 1, 32, 60, 61, 48, 30, 48, 17]

dformat = mpl.dates.DateFormatter('%m-%d-%Y %H:%M:%S')
figure = plt.figure()
graph = figure.add_subplot(111)
graph.xaxis.set_major_formatter(dformat)
plt.xticks(rotation='vertical')
figure.subplots_adjust(bottom=.35)
graph.plot_date(dates,values)
graph.set_xticks(dates)
plt.show()

У меня два вопроса:

  • Есть ли способ создать интервал по оси x, чтобы я мог четко видеть текст и точки данных? В результате получится очень длинный горизонтальный график, но я сохраню его в файл изображения.

  • Относится к первому вопросу: есть ли способ уменьшить длину графика по горизонтали, чтобы сжимать отметки на оси x, чтобы области, в которых нет данных, были сокращены?

    Например, если у нас есть три даты со значениями:

     March 22 2013 23:11:04        55
    
     March 22 2013 23:11:10        70
    
     April 1 2013 10:43:56         5
    

    Можно ли уплотнить пробелы между 23:11:10 22 марта и 1 апреля 2013 г. 1-: 43: 56?

0
tabx 1 Апр 2013 в 20:40
Вот ответ на ваш второй вопрос: stackoverflow.com/questions/5656798/…
 – 
dermen
1 Апр 2013 в 21:18
Что ты пробовал? Вы получите более точные ответы, если у нас будет существующий код для работы.
 – 
tacaswell
1 Апр 2013 в 22:11
Я обновил свой вопрос, включив в него пример кода.
 – 
tabx
1 Апр 2013 в 22:31
Почему бы вам не сделать это в виде трех отдельных графиков?
 – 
tacaswell
1 Апр 2013 в 23:25
Я не уверен, как бы разделить это на «три отдельных графика». Не могли бы вы рассказать об этом более детально? На данный момент я пытаюсь отобразить все точки на одном графике, что-то вроде обзора системы на временной шкале.
 – 
tabx
1 Апр 2013 в 23:49

1 ответ

Лучший ответ

По сути, вы просите чего-то невозможного, вы не можете одновременно видеть диапазон дней и , чтобы различия в несколько секунд были очевидны, при этом ось x оставалась линейной. Если вы хотите попробовать это, вы можете сделать что-то вроде (doc) < / а>

fig.set_size_inches(1000, 2, forward=True)

Из-за чего вы получите цифру в 1000 дюймов в ширину и 2 дюйма в высоту, но делать это довольно неуклюже.

Я думаю, вам следует применить ссылку Dermen (Python / Matplotlib - есть ли способ сделать прерывистую ось?) с разрывом в любом месте, где у ваших данных есть большой разрыв. В итоге у вас будет несколько разделов шириной в несколько секунд каждый, что даст достаточно места для меток галочки, чтобы их можно было прочитать.

0
Community 23 Май 2017 в 15:29