Участок по оси X с Matplotlib - PullRequest
0 голосов
/ 23 мая 2018

Код работает нормально, но на X axis дата не показывается, как описано в словаре (на графике она показывает только hours:minute:second).

как мне показать полную дату (year:month:day hours:minute:second)?

Код:

import numpy as np
import matplotlib.pyplot as plt
import time
from datetime import datetime, timedelta

EQ = {'2017-08-23 02:04:00':(18,1),'2017-08-23 02:05:00':(20,2),'2017-08-23 02:06:00':(12,3),'2017-08-23 02:07:00':(22,4)}
LIST_P=[];Time_P=[]
for j_p in EQ.keys():
        LIST_P.append(EQ[j_p][1])
        Time_P.append(time.mktime(time.strptime(j_p, "%Y-%m-%d %H:%M:%S")))

dateconv=np.vectorize(datetime.fromtimestamp)
Date_F1=dateconv(Time_P)
fig1 = plt.figure(1)
ax1 = plt.gca()
ax1.plot_date(Date_F1,LIST_P,'g-')
ax1.set_ylabel('Y-axis',fontsize=14)
ax1.set_xlabel('X-axis',fontsize=14)
ax1.grid(True)
for label in ax1.xaxis.get_ticklabels():
    label.set_rotation(45)
plt.show()

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Я предлагаю использовать DateFormatter для matplotlib.dates, добавив следующее:

1) В начале: из matplotlib.dates импортировать DateFormatter

2) До ax1.plot_date: myFmt =DateFormatter ("% Y-% m-% d% H:% M:% S") ax1.xaxis.set_major_formatter (myFmt)

0 голосов
/ 23 мая 2018

Вам нужно добавить ax1.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m-%d %H:%M:%S")), чтобы указать формат.Рассмотрим код ниже:

import numpy as np
import matplotlib.pyplot as plt
import time
from datetime import datetime, timedelta
import matplotlib.dates as mdates

EQ = {'2017-08-23 02:04:00':(18,1),'2017-08-23 02:05:00':(20,2),'2017-08-23 02:06:00':(12,3),'2017-08-23 02:07:00':(22,4)}
LIST_P=[];Time_P=[]
for j_p in EQ.keys():
        LIST_P.append(EQ[j_p][1])
        Time_P.append(time.mktime(time.strptime(j_p, "%Y-%m-%d %H:%M:%S")))

dateconv=np.vectorize(datetime.fromtimestamp)
Date_F1=dateconv(Time_P)
fig1 = plt.figure(1)
ax1 = plt.gca()
ax1.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m-%d %H:%M:%S"))
ax1.plot_date(Date_F1,LIST_P,'g-')
ax1.set_ylabel('Y-axis',fontsize=14)
ax1.set_xlabel('X-axis',fontsize=14)
ax1.grid(True)
for label in ax1.xaxis.get_ticklabels():
    label.set_rotation(45)
plt.show()

Вывод:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...