Python 绘制类别变量和日期时间之间的关系

Python 绘制类别变量和日期时间之间的关系,python,matplotlib,data-visualization,seaborn,Python,Matplotlib,Data Visualization,Seaborn,考虑一个数据帧 some_id timestamp a 1.2.2019 b 2.2.2019 c 3.2.2019 a 4.2.2019 b 5.2.2019 现在您可以看到有3个唯一的ID,其中a和b与2个时间戳关联,我希望ID出现在x轴上,日期块出现在y轴上。如何做到这一点?谢谢你的耐心。我希望在python中使用matplotlib或seaborn或任何其他可视化库。如果您能提及这两个

考虑一个数据帧

some_id  timestamp
  a         1.2.2019
  b         2.2.2019
  c         3.2.2019
  a         4.2.2019
  b         5.2.2019

现在您可以看到有3个唯一的ID,其中a和b与2个时间戳关联,我希望ID出现在x轴上,日期块出现在y轴上。如何做到这一点?谢谢你的耐心。我希望在python中使用matplotlib或seaborn或任何其他可视化库。如果您能提及这两个变量之间有意义的可视化的不同方式,我也将不胜感激。我希望这个数字如下所示

这里是一种可视化数据的方法,id在x轴上,日期在y轴上。假设您的日期格式为
day.month.year

使用
ax.text
可以将日期或其他感兴趣的列的文本放在条形图中

导入matplotlib.pyplot作为plt
将matplotlib.dates导入为mdates
从日期时间导入日期时间
作为pd进口熊猫
def timestr_to_num(timestr):
打印(datetime.strtime(timestr,%d.%m.%Y'))
返回mdates.date2num(datetime.strtime(timestr,'%d.%m.%Y'))
行=[[a',1.2.2019'],
['b','2.2.2019'],
[c','2019年2月3日'],
[a',2019年2月4日]],
[b',2019年2月5日]]
列=['some_id','timestamp']
df=pd.DataFrame(数据=行,列=列)
图,ax=plt.子批次(图尺寸=(10,5))
xs=list(df['some_id'].unique())
对于df.itertuples()中的行:
x=xs.index(row.some_id)
y=timestr_to_num(行时间戳)
最大杆(y,左=x-0.5,宽=1,高=1)
ax.text(x,y,row.timestamp,ha='center',va='center',color='white',fontsize=16)
ax.yaxis.set\u major\u格式化程序(mdates.DateFormatter(“%d.%m.%Y”))
ax.yaxis.set_major_locator(mdates.DayLocator(interval=1))#每小时设置一个刻度
ax.set\u xlabel('some\u id'))
ax.set_ylabel('时间戳')
ax.set_xticks(范围(len(xs)))
ax.setxticklabels(xs)
plt.紧_布局()
plt.show()

另一个想法可以是:

df.sort_values(by=['some_id', 'timestamp']).groupby(['some_id', 'timestamp']).size().unstack().plot(kind='bar', stacked=True)
但是,这些日期都在一个图例中,如果列表太长,这可能不合适