Я искал, пробовал и отлаживал, но теперь мой мозг просто sh, и я мог бы использовать некоторые идеи.
Я хотел бы точно настроить интервалы тиков моего графика.
Если я ограничиваю данные 1 минутным интервалом, блокировка тиков показывает только секунды,
Если я ограничиваю данные 5-минутным диапазоном, блокировка тиков показывает HH.x1, HH.M2 .... HH.M5.
Если я увеличу свои данные до 15 минут или до 1 часа, галочки заблокируются для отображения HH.x0, HH.10, HH.20, ... HH.50
Кажется, что locator = mdates.AutoDateLocator(minticks=15, maxticks=20)
увеличивает количество тиков, но генерация графика занимает намного больше времени, чем с пустым выделением.
Я пытался использовать некоторые локаторы сюжета из примеров matplotlib, но затем даты тормозятся . Это единственный найденный мной объект HH:MM:SS
, который действительно актуален без особого ручного нарезания et c. Но у меня серьезный мозговой инсульт из-за слишком большого количества информации и множества различных примеров, чтобы отсортировать остальное на месте.
Я использую примеры mdates.AutoDateLocator в качестве первой попытки просто запрограммировать все на ось x на одном линейном графике, получая таким образом красивую solid черную полосу.
Как я могу заставить, скажем, фиксированные 15 тиков с правильными временными метками? Могу ли я использовать для этого автолокаторы mdates
? Неважно выбирать фактические отметки / значения, просто чтобы график выглядел красиво и организованно с немного более подробной информацией по оси x. Хотя, конечно же, галочка должна совпадать с осью Y.
Как видно из pi c, ось Y также немного шаткая, так что это, несомненно, мой второй вопрос. Как мне go настроить метки / метки Yaxis?.
Весь набор данных, используемый для графиков, считывается из CSV, созданных различными регистраторами данных, и срезается в соответствии с заданным диапазоном времени.
#Data examble for x-axis:
0 2020-03-22 10:50:40
1 2020-03-22 10:50:45
2 2020-03-22 10:50:50
3 2020-03-22 10:50:55
4 2020-03-22 10:51:00
...
294 2020-03-22 11:15:15
295 2020-03-22 11:15:20
296 2020-03-22 11:15:25
297 2020-03-22 11:15:30
298 2020-03-22 11:15:35
................................
#Whole data for 1hr slice
[ TimeString VarValue
0 22.3.2020 10.50.40 11.06
1 22.3.2020 10.50.45 11.05
2 22.3.2020 10.50.50 11.07
3 22.3.2020 10.50.55 11.07
4 22.3.2020 10.51.00 11.06
.. ... ...
725 22.3.2020 11.51.18 10.82
726 22.3.2020 11.51.23 10.85
727 22.3.2020 11.51.28 10.83
728 22.3.2020 11.51.33 10.82
729 22.3.2020 11.51.38 10.83
[730 rows x 2 columns], TimeString VarValue
0 22.3.2020 10.50.40 20.74
1 22.3.2020 10.50.45 20.71
2 22.3.2020 10.50.50 20.70
3 22.3.2020 10.50.55 20.69
4 22.3.2020 10.51.00 20.70
.. ... ...
725 22.3.2020 11.51.18 20.11
726 22.3.2020 11.51.23 20.11
727 22.3.2020 11.51.28 20.10
728 22.3.2020 11.51.33 20.13
729 22.3.2020 11.51.38 20.08
[730 rows x 2 columns], TimeString VarValue
0 22.3.2020 10.50.40 12.36
1 22.3.2020 10.50.45 12.36
2 22.3.2020 10.50.50 12.33
3 22.3.2020 10.50.55 12.37
4 22.3.2020 10.51.00 12.33
.. ... ...
725 22.3.2020 11.51.18 11.43
726 22.3.2020 11.51.23 11.44
727 22.3.2020 11.51.28 11.45
728 22.3.2020 11.51.33 11.43
729 22.3.2020 11.51.38 11.43
[730 rows x 2 columns]]
Это сюжет, который я получаю со следующим кодом 1
#locator = mdates.AutoDateLocator()
locator = mdates.AutoDateLocator(minticks=15, maxticks=20)
formatter = mdates.ConciseDateFormatter(locator)
fig, (ax0,ax1,ax2,ax3) = plt.subplots(4, sharex=True,figsize=(11.69,8.27))
ax0.plot(LinesX_labels, line1Y )
ax0.set_xlabel(file1_name)
ax1.plot(LinesX_labels, line2Y)
ax1.set_xlabel(file2_name)
ax2.plot(LinesX_labels, line3Y)
ax2.set_xlabel(file3_name)
ax3.plot(LinesX_labels, line1Y, LinesX_labels, line2Y, LinesX_labels, line3Y)
ax3.set_xlabel(xlabel)
ax3.xaxis.set_major_locator(locator)
ax3.xaxis.set_major_formatter(formatter)
for ax in (ax0,ax1,ax2,ax3):
ax.grid(True)
plt.show()
fig.savefig('plottest.png', dpi=300,
orientation='portrait')