【问题标题】:Seaborn point plot using dates as x-axis使用日期作为 x 轴的 Seaborn 点图
【发布时间】:2018-03-21 08:28:32
【问题描述】:

我正在尝试使用 Seaborn 生成基于数据收集日期分组的数据集点图。

在玩了一会儿 Seaborn 点图之后,我意识到一个问题:这些数据是在不同的日期收集的,但日期的间隔并不均匀。在我看来,在绘图期间,Seaborn 将日期视为分类变量。

我想知道是否有办法找到与日期间隔对应的间距的数据?

【问题讨论】:

  • 如果您需要帮助,请提供Minimal, Complete, and Verifiable example
  • 我不同意@Evert 所说的话。 Seaborn 点图是一个分类图,无论其数据类型如何,类别都均匀分布在点图上。也就是说,我认为 pointplot 实际上不是您在这里寻找的,而是散点图。为了帮助您制作所需的情节,您可能希望在问题中包含一些示例数据。
  • @Evert x 值已经是“日期时间”对象,但 Seaborn 中的点图似乎没有相应地对它们进行间隔。
  • @ImportanceOfBeingErnest 非常感谢。你是绝对正确的。我在 matplotlib 中使用了 error_bar 图并解决了这个问题。谢谢!
  • 我猜你不应该在问题中回答你自己的问题。如果您认为您发现的内容对其他人有用,请将其写下来作为您问题的答案。然后,您可以接受自己的答案(2 天后),以便将问题标记为已解决。请注意,matplotlib 中的函数称为 errorbar,而不是 error_bar

标签: python datetime matplotlib plot seaborn


【解决方案1】:

尝试以下方法将您的字符串日期转换为 datetime 对象

import time
import datetime as dt
from datetime import datetime

def dateconvert(Start_date):
    try:
        Start_date = int(Start_date)  
        Date_String = str(Start_date)
        dateconv = dt.datetime.strptime(Date_String,'%YYYY-%mm-%dd').strftime('%d/%m/%Y')
        return  dateconv
    except ValueError:
        return Start_date #or '' or whatever you want to return for NULL

【讨论】:

  • Taylrl,感谢您的回答。但是,数据已经在日期时间对象中,问题是 Seaborn 未能按比例绘制它们。
【解决方案2】:

在我看来,Seaborn 不支持 datetime 作为 x 变量,在这种情况下,所有日期都被视为分类变量。这可能不是一个大问题,但它阻止我将回归线拟合到点上。

我最终使用了matplotlib.errorbar 函数,中值和标准值使用numpy 计算。这似乎不是一个理想的解决方案,但它确实有效。 (仍在研究回归趋势线,但我现在很好。)

updated plot

【讨论】:

    猜你喜欢
    • 2020-11-20
    • 2019-11-11
    • 2020-09-03
    • 2017-11-05
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 2017-04-16
    相关资源
    最近更新 更多