matplotlib Y轴格式为HH:mm(秒)

wtzytmuj  于 2023-08-06  发布在  其他
关注(0)|答案(4)|浏览(106)

我有一个pandas数组,其中包含一列秒。现在,我想从这些秒中仅以hh:mm格式格式化y轴,而不是仅从该列中格式化秒。
enter image description here

cdmah0mi

cdmah0mi1#

试试这个代码:

import matplotlib.pyplot as plt
from matplotlib import dates

# fake data
arr_data = range(0, 4)
arr_secs = [52000, 53000, 54000, 55000]

# format seconds to date with this format '%H:%M:%S'
arr__secs_formatted = list(map(datetime.datetime.strptime, map(lambda s: time.strftime('%H:%M:%S', time.gmtime(s)), arr_secs), len(arr_secs)*['%H:%M:%S']))

fig, ax = plt.subplots()
ax.plot(arr_data, arr_secs_formatted, 'ro-')

# set your date formatter whit this format '%H:%M'
formatter = dates.DateFormatter('%H:%M')
ax.yaxis.set_major_formatter(formatter)

plt.show()

字符串


的数据

3hvapo4f

3hvapo4f2#

试试这个

plt.yticks(ylim, [str(n).zfill(2) + ':00' for n in np.arange(0, 24, 1)])

字符串

z5btuh9x

z5btuh9x3#

问题解决了!非常感谢您!我不知道散点图和曲线图的区别,但是我把线条风格改成了“o”,它对我很有效。

p4rjhz4m

p4rjhz4m4#

我找不到一个直接的,等效的解决方案,为海运用户,所以我想张贴我拼凑后,几个SO搜索:

import pandas as pd
import seaborn as sns
import datetime
from matplotlib import ticker as tkr
from matplotlib import pyplot as plt

#Sample dataframe
data = {
        'category': [1,2,3],
        'time': [915,2710,2000]
       }
df = pd.DataFrame.from_dict(data)

g = sns.catplot(data=df, x='category', y='time', kind="bar")

#format y-axis
fmt = tkr.FuncFormatter(lambda x, pos: str(datetime.timedelta(seconds=x)))
for ax in g.axes.flat:
    ax.yaxis.set_major_locator(tkr.MultipleLocator(900)) #15-minute (900s) step
    ax.yaxis.set_major_formatter(fmt) #convert s to hh:mm:ss

plt.show()

字符串
seaborn chart
这里的关键是for ax in g.axes.flat,它允许seaborn用户使用pyplot的yaxis方法。参见How do i increase seaborn Y axis step

相关问题