为了账号安全,请及时绑定邮箱和手机立即绑定

matplotlib 水平条形图,时间以小时为单位:分钟:x 轴上的秒数

matplotlib 水平条形图,时间以小时为单位:分钟:x 轴上的秒数

繁花不似锦 2022-03-09 20:37:53
我想使用水平条形图显示用户在一天内花费在几项任务上的时间。y 轴是任务列表,x 轴是花费在这些任务上的时间。时间采用 %H:%M:%S 格式。fig, ax = plt.subplots()# Example datatasks = ('Reading', 'Mobile', 'Outing', 'Laptop')y_pos = np.arange(len(tasks))time_spent = ["01:01:34","00:05:23","00:00:09","02:34:32"]error = np.random.rand(len(tasks))ax.barh(y_pos, time_spent, xerr=error, align='center')ax.set_yticks(y_pos)ax.set_yticklabels(tasks)ax.set_xlabel('Time spent')ax.xaxis.set_major_locator(HourLocator())ax.xaxis.set_major_formatter(DateFormatter('%H:%M:%S'))plt.show()我在某个地方找到了它,但它不起作用。我什至无法对其进行调整以使其正常工作。请提出解决方案。此外,我还想显示每个水平条后花费的时间。对此的任何想法也是可观的。
查看完整描述

1 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

根据重要评论,我以秒为单位传递时间并使用时间字符串显示为标签并且它有效。


fig, ax = plt.subplots()


# Example data

tasks = ('Reading', 'Mobile', 'Outing', 'Laptop')

time_spent = ["01:01:34","00:05:23","00:00:09","02:34:32"]

timesec = []

for i in range(4):

    timesec.append(convertToSeconds(time_spent[i]))

y_pos = np.arange(len(tasks))

error = np.random.rand(len(tasks))


ax.barh(y_pos, timesec, xerr=error, align='center')

ax.set_yticks(y_pos)

ax.set_yticklabels(tasks)

ax.set_xlabel('Time Spent')

ax.get_xaxis().set_visible(False)


for i, v in enumerate(times):

    print(i)

    ax.text(v + 3, i, time_spent[i], color='blue')


查看完整回答
反对 回复 2022-03-09
  • 1 回答
  • 0 关注
  • 243 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信