1

我正在 Python Matplotlib 中绘制以 mm:ss.tttt 格式获得的时间线图。

我已经将这些值转换回 10thousanths 秒,我可以创建一个漂亮的情节。但这意味着 Y 轴显示的值是“832323”,而不是更容易阅读的“1:23.2323”。

有什么方法可以适当地格式化输出值吗?

4

1 回答 1

2

在我写完这篇文章后不久,我自己解决了这个问题。使用 Matplotlibs 的轴,set_major_formatter() 函数。

我写了一个快速格式化函数,它会在千分之一秒内获取一个值,然后将其转换回 mm:ss.tttt。然后将此格式化程序传递给轴定义。

将“ticker”模块与绘图内容一起导入:

import matplotlib.pyplot as plt                                                 
from matplotlib import ticker  

创建自己的值格式化函数:

def format_10Kth_time(time, pos=None):                                          
    mins     = time // (10000 * 60)                                             
    secs     = (time - (mins * 10000 * 60)) // (10000)                          
    fracsecs = time % 10000                                                     
    return "%d:%02d.%d" % (mins, secs, fracsecs)

然后在我的绘图代码中,我这样做是为了改变 Y 轴格式:

plt.gca().yaxis.set_major_formatter(ticker.FuncFormatter(format_10Kth_time))
plt.plot(...) 
plt.show() 
于 2013-02-04T02:27:36.327 回答