python绘制图表可自由选择时间_用python绘制时间轴图表

一种可能的方法是将你的条目分散绘制出来,并在每个条目上添加文本。首先从文本文件加载数据(如果您使用的是标准CSV文件,请删除delimiter和skipinitialspace)。接下来,它将条目排序到字典中,键是id。它为每个ID创建一个单独的图形。每个ID的所有条目都按日期排序。如果一个日期有多个条目,则它们的文本将垂直组合成一个条目,以避免覆盖。月日也被添加到文本中。在from collections import defaultdict

import matplotlib.pyplot as plt

import matplotlib.dates as dates

from itertools import groupby

from datetime import datetime

import csv

data = defaultdict(list)

with open('input2.txt', 'rb') as f_input:

csv_input = csv.reader(f_input, delimiter=' ', skipinitialspace=True)

header = next(csv_input)

for row in csv_input:

row.append(datetime.strptime(row[1], '%Y-%m-%d'))

row.append(dates.date2num(row[4]))

data[row[0]].append(row)

bbox = dict(facecolor='blue', alpha=0.1, pad=1.0)

for rows in data.values():

fig = plt.figure(figsize=(10, 2))

ax = fig.add_subplot(111)

# Get date range

d = sorted(row[5] for row in rows)

ax.set_xlim(d[0]-10, d[-1]+10)

ax.set_ylim(0, 0.8)

for k, g in groupby(sorted(rows), lambda x: x[4]):

rows = list(g)

text = '{}\n\n{}'.format(k.day, '\n'.join([row[2] for row in rows]))

ax.scatter(rows[0][5], 0.1, s=5, c='black')

ax.text(row[5], 0.15, text, ha="center", va="bottom", fontsize=7.0, bbox=bbox)

fig.suptitle(row[0])

fig.subplots_adjust(bottom=0.2) # Add space at bottom

ax.xaxis.set_major_locator(dates.MonthLocator())

#ax.xaxis.set_minor_locator(dates.DayLocator())

ax.xaxis.set_major_formatter(dates.DateFormatter('%Y\n%m'))

ax.yaxis.set_ticks([])

plt.show()

这将显示一个ID:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值