使用列表在matplotlib散点图中绘制日期和时间

0 投票
1 回答
1578 浏览
提问于 2025-05-10 20:18

有没有办法用Python的matplotlib库画一个散点图,其中x轴是日期,y轴是时间?我想用下面的两个单独的列表来实现。

  dates = ['2015-12-20','2015-09-12']
  times = ['22:50:12','19:33:09']

相关文章:

  • 暂无相关问题
暂无标签

1 个回答

0

这里使用的是 plot_date 而不是 scatter。这样做可能会满足你的需求。

import datetime
from matplotlib import pyplot as plt 
from matplotlib.dates import date2num


def date_to_days(date):
    return date2num(datetime.datetime.strptime(date, '%Y-%m-%d'))


def time_to_hours(time):
    [hh, mm, ss] = [int(x) for x in time.split(':')]
    seconds = datetime.timedelta(hours=hh, minutes=mm, seconds=ss).seconds
    hours = seconds / float(3600)
    return hours


if __name__ == '__main__':
    start_date = '2015-08-01'
    end_date = '2015-12-31'

    dates = ['2015-12-20','2015-09-12']
    times = ['22:50:12','19:33:09']

    days = [date_to_days(d) for d in dates]
    hours = [time_to_hours(t) for t in times]

    plt.plot_date(days, hours, ydate=False)
    plt.axis([date_to_days(start_date), date_to_days(end_date), 0, 24])
    plt.xlabel('Date')
    plt.ylabel('Time (hours)')
    plt.show()

撰写回答