试图绘制timedelta,但yaxis在1e14,想要格式HH:MM:SS

时间:2016-01-21 21:06:28

标签: python matplotlib timedelta

我在x轴(即实际日期)上绘制日期时间,然后在y轴上绘制timedelta,这实际上是时间跨度或时间量。最初我使用yaxis的日期时间,但是我遇到了时间值超过24小时的用例,然后它破坏了代码。所以我必须使用timedelta来适应这些值。但是当我尝试使用plot_date绘制它时,带有timedelta值的yaxis很有趣。

Output picture

我最初将信息存储在数据框中,然后将值更改为timedelta。这是我输出此图的代码

import datetime as dt
import matplotlib.dates as mdates
import matplotlib
import numpy as np 
import matplotlib.pyplot as plt
import pandas as pd 
import matplotlib as mpl
from matplotlib.backends.backend_pdf import PdfPages

plt.close('all')

#put data into dataframe
location='D:\CAT'
csvpath=location+('\metrics_summaryTEST.csv')
print csvpath
df=pd.read_csv(csvpath)

#setup plot/figure
media = set(df.mediaNumber.values)
num_plots = len(media)
ax = plt.gca()
pdfpath=location+('\metrics_graphs.pdf')
pp = PdfPages(pdfpath)

#declaring some variables
publishTimevals=np.zeros(len(df.publishTime.values),dtype="S20")
xdates=np.zeros(len(df.publishTime.values),dtype="S20")
ytimes=np.zeros(len(df.totalProcessTime.values),dtype="S8")

for f in sorted(media):
    name = f
    plt.figure(f)
    plt.clf()
    color = next(ax._get_lines.color_cycle)
    #PROCESS PUBLISHTIME
    publishTimevals= df.loc[df['mediaNumber']==f,['publishTime']]
    xdates = map(lambda x: mpl.dates.date2num(dt.datetime.strptime(x, '%Y-%m-%d %H:%M')),publishTimevals.publishTime)
    #PROCESS TOTALPROCESSTIME
    totalProcessTimevals= df.loc[df['mediaNumber']==f,['totalProcessTime']]
    ytimes = pd.to_timedelta(totalProcessTimevals.totalProcessTime)
    plt.plot_date(xdates,ytimes,'o-',label='totalProcessTime',color=color)
    print ytimes
    plt.show()
    #format the plot
    plt.gcf().autofmt_xdate()
    plt.xlabel('publishTime')
    plt.ylabel('ProcessTime HH:MM:SS')
    plt.legend(loc=8, bbox_to_anchor=(0.5,-0.3),ncol=3,prop={'size':9})
    ax.grid('on')
    plt.title('%s Processing Time' % (f))
    plt.margins(0.05)
    #plt.grid('on')
    plt.minorticks_on()
    plt.grid(which = 'minor', alpha = 0.3)
    plt.grid(which = 'major', alpha = 0.7)
    plt.show()

有人能指出这里发生了什么吗?

0 个答案:

没有答案