【问题标题】:X-axis Plot with Matplotlib使用 Matplotlib 绘制 X 轴图
【发布时间】:2018-05-23 18:52:32
【问题描述】:

代码运行正常,但在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()

【问题讨论】:

    标签: python python-3.x matplotlib


    【解决方案1】:

    您需要添加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()
    

    输出:

    【讨论】:

      【解决方案2】:

      我建议使用matplotlib.dates的DateFormatter,添加以下内容:

      1) 开头: 从 matplotlib.dates 导入 DateFormatter

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

      【讨论】:

        猜你喜欢
        • 2019-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-09
        • 2012-03-26
        • 1970-01-01
        相关资源
        最近更新 更多