Xav*_*ier 8 python matplotlib pandas seaborn
我正在尝试使用seaborn绘制图表
sns.lmplot(x="when_start", y="how_long",hue= 'state',
data=apps_pd.loc[(apps_pd['user'] == 'xavi')],lowess=True);
Run Code Online (Sandbox Code Playgroud)
其中apps_pd是一个数据框。和的Fileds apps_pd [ 'when_start']是INT像1499963856220,并同样用于how_long。
脚本结果

但是,如果不更改数据格式,则会得到一个非常混乱的图形。
无论如何,我可以将x轴的单位更改为'yyyy-mm-dd'吗?我想将我的所有数据按天级别分组。
我还可以将y轴的单位更改为时分秒吗?
这是我数据框的前5行。

首先,当您发布数据时,以文本格式而非图像发布数据。
您可以将col转换when_start为日期时间格式,如下所示:
apps_pd['when_start'] = pd.to_datetime(apps_pd['when_start'], unit='ms')
Run Code Online (Sandbox Code Playgroud)
但是,作为lmplot调用之一的散点图不支持datetime格式。如以下示例所示,您必须在绘制后替换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()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11311 次 |
| 最近记录: |