Matplotlib сюжетные накладывающиеся по времени метки - PullRequest
0 голосов
/ 07 апреля 2020

Итак, у меня есть 2 списка значений: один со значениями температуры (временный список) и один со значениями времени (временный список).

Я использую этот код для построения значений:

n = 0
bettertime = []
sizeoflist = len(timelist)
while n < sizeoflist:
    newtime = datetime.strptime(timelist[n], "%H:%M:%S")
    bettertime.append(newtime.strftime("%H:%M"))
    n = n + 1

fig, ax = plt.subplots()
ax.plot(bettertime, templist)
plt.show()

И когда я его запустил, я получил следующие результаты:

results of plotting

Значения на оси времени отображаются неправильно. Я также пытался, но я только что обрезал значения (просто нанося первые 10 значений):

ax.set(xlim=(0, 10))

Итак, после некоторых исследований я обнаружил, что мой список времени (timelist) представляет собой список строк, не в формате datetime, поэтому matplotlib не знает, как его уменьшить.

Как мне уместить значения в графике? (Например, для templist на оси Y были установлены автоматы c) (я хочу получить как 10 значений времени на графике, но от максима до минимума, а не только первые 10 значений списка)

И, как примечание, списки (timelist и templist) являются списками произвольной длины (равной длины, len (timelist) равен len (timelist), если это вообще важно)

РЕДАКТИРОВАТЬ:

Решение:

fmt = mdates.DateFormatter('%H:%M')
bettertimelist = [datetime.strptime(i, '%H:%M:%S') for i in timelist]
fig.autofmt_xdate()
ax.xaxis.set_major_formatter(fmt)

Ответы [ 2 ]

2 голосов
/ 08 апреля 2020

Вы можете указать, что метка xtick будет вращаться, например:

times = np.arange(10, 27, 1)
templist = np.sin(times)
bettertime = ["10:"+repr(time) for time in times] # make string for the xlabel, since that's what the question states

fig, ax = plt.subplots()
ax.plot(bettertime, templist)
plt.xticks(rotation=45)         # here's the line that does the rotation

enter image description here

0 голосов
/ 08 апреля 2020

Вы можете попробовать повернуть значение xticks. plt.xticks(rotation=45) # 90 ---> vertical xticks

n = 0
bettertime = []
sizeoflist = len(timelist)
while n < sizeoflist:
    newtime = datetime.strptime(timelist[n], "%H:%M:%S")
    bettertime.append(newtime.strftime("%H:%M"))
    n = n + 1

fig, ax = plt.subplots()
ax.plot(bettertime, templist)
plt.xticks(rotation=45)   # Add this line for xticks to be rotated
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...