Ну, во-первых, надо быть внимательным. В скрипте была ошибка, из-за которой все даты были равны.
Отвечаю на второй вопрос - чтобы дата была такой, какой вам надо, используйте DateFormatter.
Исправленный код будет выглядеть вот так
import matplotlib.pyplot as plt
import matplotlib
import sqlite3
from matplotlib import dates
from datetime import datetime, timedelta
import matplotlib.dates as mdates
price = []
check_time = []
conn = sqlite3.connect('data.db')
c = conn.cursor()
z = c.execute('''SELECT value FROM euro ORDER BY id DESC LIMIT 114;''')
rowss = z.fetchall()
for row in rowss:
s = row[0]
s = float(s)
price.append(s)
now = datetime.now()
time_value = now
i=1
while i<=114:
check_time.append(time_value)
time_value = time_value - timedelta(minutes=10)
i=i+1
dates = matplotlib.dates.date2num(check_time)
plt.plot(check_time, price, label='курс евро')
plt.title('КУРС ЕВРО ЗА ПОСЛЕДНИЕ СУТКИ. ', fontsize=15)
plt.xlabel('время', fontsize=12, color='blue')
plt.ylabel('стоимость', fontsize=12, color='blue')
plt.xticks(rotation=45)
plt.legend()
plt.grid(True)
# Преобразовываем дату
plt.gcf().autofmt_xdate()
myFmt = mdates.DateFormatter('%H:%M')
plt.gca().xaxis.set_major_formatter(myFmt)
plt.savefig('data/euro.png')
И сам график будет выглядеть вот так.