在matplotlib/seaborn中用groupby绘制直线图?

2024-10-02 14:20:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据集(缩写,但仍传达相同的想法)。我想展示用户分数如何随时间变化(postDate表示时间)。数据也由postDate进行预排序。我们希望看到一个很好的图(如果可能的话可以使用seaborn),它将分数作为y轴,时间作为x轴,并显示用户在时间上的分数(每个用户有一条单独的线)。我是否需要将postDate(当前是一个字符串)转换为另一种格式,以便更好地绘制?非常感谢你!在

userID   postDate                                userScore (1-10 scale)
Mia1     2017-01-11 09:07:10.616328+00:00        8
John2    2017-01-17 08:05:45.917629+00:00        6
Leila1   2017-01-22 07:47:67.615628+00:00        9
Mia1     2017-01-30 03:45:50.817325+00:00        7
Leila    2017-02-02 06:38:01.517223+00:00        10

Tags: 数据字符串用户排序格式时间绘制seaborn
2条回答

我以前用过plotly,如果你使用的是Jupyter笔记本,这是一个非常好的选择来进行交互式可视化。在Jupyter中使用袖扣生成htmls或内联绘图。它只是在某处托管你的图表,但我免费使用它来进行我自己的数据分析。在

安装情节和袖扣,袖扣帮助做的情节几乎立即与熊猫dfs。在

例如,您可以:

your_df.iplot(x='postDate', y='userScore')

这将自动给出您描述的“时间序列”。在

根据示例数据,您显示的postDate系列已经是pandas datetime值。所以要在X轴上绘制日期,matplotlib中的关键是使用plot_date,而不是plot。像这样:

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

for key, g in df.groupby['userID']:
    ax.plot_date(g['postDate'], g['userScore'], label=key)

ax.legend()

相关问题 更多 >