Kirushkaa,
Краткая инструкция:
import matplotlib.pyplot as plt
def diagram(date,sys,dia):
# создаем пустую канву fig
dpi = 100
fig = plt.figure(dpi = dpi, figsize = (800 / dpi, 600 / dpi))
# "...Столкнулся с проблемой, что для названия осей не хватает места..."
# Добавляем subplot на канву
# [left, bottom, width, height] - каждый параметр в пределах от 0 до 1
# меняем bottom и height, чтобы двигать subplot по канве вверх-вниз,
# тем самым уменьшая или увеличивая место для xlabel и xticks
# bottom + height <= 1
ax = fig.add_axes([0.1, 0.2, 0.8, 0.7])
ax.set_title("Title - values from date")
ax.set_xlabel('Day - Time')
ax.set_ylabel('Values')
# Рисуем графики:
#ax.grid(True) - если надо отобразить сетку
#ax.plot(date, sys, linestyle = 'solid', marker='o', markersize=1, label='SYS')
#ax.plot(date, dia, linestyle = 'solid', marker='o', markersize=1, label='DIA')
# Рисуем диаграмму:
ax.bar(date, sys, 1 / len(date), color='red', label='SYS')
ax.bar(date, dia, 1 / len(date), color='blue', label='DIA')
ax.legend() # Показываем легенду
#ax.legend(loc='upper left') - изменить положение легенды
# "...как изменить разбиение оси y, что б там было от 0 до 220 с интервалом 10 или 20..."
# от 0 до 220
y_lim_min = 0
y_lim_max = 220
ax.set_ylim(y_lim_min, y_lim_max)
# с интервалом 20
step_major = 20
y_major_ticks = range(y_lim_min, y_lim_max, step_major)
ax.set_yticks(y_major_ticks)
# Меняем параметры для основных тиков оси Х (для Y - axis='y', для обеих осей - axis='both')
# для основных тиков which='major', для дополнительных which='minor'
ax.tick_params(axis='x', which='major', labelsize=10, labelrotation=45)
plt.savefig('test.png', dpi = dpi) # Сохранить в файл
plt.show()
Смотрим, что получилось:
import random
import datetime as dt
day = [dt.datetime(2021, 2, 16, 15, 15, 00) + dt.timedelta(hours=i*3) for i in range(0,15)]
sys = [random.randint(110,140) for _ in range(15)]
dia = [i - random.randint(1,5)-30 for i in sys]
diagram(day,sys,dia)