尝试绘制时间增量,但yaxis为1e14,希望格式为HH:MM:

2024-06-27 09:36:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我在xaxis上绘制日期时间(它是实际日期),然后在yaxis上绘制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()

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


Tags: importdflenplotmatplotlibasnp时间