如何使用seaborn在x轴上绘制int到datetime?

2023-11-21

我正在尝试使用seaborn来绘制图表

sns.lmplot(x="when_start", y="how_long",hue= 'state',
           data=apps_pd.loc[(apps_pd['user'] == 'xavi')],lowess=True);

Where apps_pd是一个数据框。和领域apps_pd['when_start']是 int 像 1499963856220,并且相同how_long.

脚本的结果

但是,如果我不更改数据的格式,我会得到一个非常混乱的图表。

无论如何,我可以将 x 轴的单位更改为“yyyy-mm-dd”吗?我想将所有数据按日级别分组。

我还可以将 y 轴的单位更改为小时-分钟-秒吗?

Here is the first 5 lines of my dataframe.


首先,当您发布数据时,以文本格式发布,而不是图像。

您可以转换列when_start日期时间格式如下:

apps_pd['when_start'] = pd.to_datetime(apps_pd['when_start'], unit='ms')

然而,散点图是调用之一lmplot 不支持日期时间格式。您必须在绘制后替换 xtick 标记,如下例所示:

import pandas as pd
import seaborn as sns
import matplotlib.pylab as plt

cols = ['how_long', 'state', 'user', 'when_start']
data = [[62297, 'FINISHED', 'xavi', 1499963793923],
 [25761, 'FINISHED', 'xavi', 1499963446385],
 [20082, 'FINISHED', 'xavi', 1499963221203],
 [20508, 'FINISHED', 'xavi', 1499963156760],
 [580975, 'FINISHED', 'xavi', 1499962435293]]

apps_pd = pd.DataFrame(data, columns = cols)
# convert ms timestamps of dataframe to date time format by pandas
#apps_pd['when_start'] = pd.to_datetime(apps_pd['when_start'], unit='ms')
print (apps_pd)

sns.lmplot(x='when_start', y='how_long', hue= 'state',
 data=apps_pd[(apps_pd['user'] == 'xavi')],lowess=True)

# get current axis
ax = plt.gca()
# get current xtick labels
xticks = ax.get_xticks()
# convert all xtick labels to selected format from ms timestamp
ax.set_xticklabels([pd.to_datetime(tm, unit='ms').strftime('%Y-%m-%d\n %H:%M:%S') for tm in xticks],
 rotation=50)

plt.show()

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用seaborn在x轴上绘制int到datetime? 的相关文章