matplotlib / seaborn散点图,在x轴上有datetime对象,并在日期中有多个条目

时间:2019-02-15 03:09:15

标签: python datetime matplotlib seaborn scatter-plot

我有一个数据框,并希望散布一个图,以了解完成请求的时间days在y轴上以及提交请求的日期(Received ,它是x轴上的日期时间对象)。

某人的“已接收”值有两个条目,因为有时两个请求是在同一天提交的。

以下是我的一些数据和尝试过的代码:

Received          Days
2012-08-01        41.0 
2014-12-31       692.0
2015-02-25       621.0
2015-10-15       111.0

sns.regplot(x=simple_denied["Received"], y=simple_denied["days"], marker="+", fit_reg=False)


plt.plot('Received','days', simple_denied, color='black')

2 个答案:

答案 0 :(得分:0)

让我们从设置数据开始。我实际上在您的示例数据集中添加了另一个日期“ 2014-12-31”,以便当我们在同一天收到多个请求时可以验证绘图例程是否正常工作

import matplotlib.pyplot as plt
plt.style.use('seaborn')
import pandas as pd
import numpy as np

dates = np.array(['2012-08-01', '2014-12-31',
                  '2014-12-31', '2015-02-25',
                  '2015-10-15'], dtype='datetime64')

days = np.array([41, 692, 50, 621, 111])

df = pd.DataFrame({'Received' : dates, 'Days' : days})

创建的数据框有望近似于您所拥有的。现在可以直接生成所需的散点图:

fig, ax = plt.subplots(1, 1)

ax.scatter(df['Received'], df['Days'], marker='+')
ax.set_xlabel("Receieved")
ax.set_ylabel("Days")

这给了我以下情节:

enter image description here 正如@ImportanceOfBeingErnest在以下评论中指出的那样,您需要最新版本的熊猫才能使该例程正常工作。

答案 1 :(得分:0)

您遇到了两个无效的案例。 sns.regplot不适用于日期。并且plt.plot将需要指定数据(仅凭列名就无法知道要使用哪些数据)。

因此,以下任何一项将为您提供数据的散点图

  • sns.scatterplot(x="Received", y="days", data=simple_denied, marker="+")
  • sns.scatterplot(x=simple_denied["Received"], y=simple_denied["days"], marker="+")

  • plt.scatter(simple_denied["Received"].values, simple_denied["days"].values, marker="+")

  • plt.plot(simple_denied["Received"].values, simple_denied["days"].values, marker="+", ls="")

  • plt.plot("Received", "days", data=simple_denied, marker="+", ls="")