【问题标题】:Plot Datetime object against Float [duplicate]针对浮点数绘制日期时间对象[重复]
【发布时间】:2020-12-11 03:49:35
【问题描述】:

我试图显示y 值在x 时间上的进展-y 是浮点类型,x 是日期时间类型。我知道我很可能只是遗漏了一些东西,但我已经查看了 StackOverflow、GitHub 和文档,但我不知道如何根据浮点数绘制日期时间(我希望情节显示显示绘图时以人类可读的格式显示日期)。

这是数据框:

          Date       High        Low       Open      Close    Volume  Adj Close
0   2019-09-19  20.139999  17.610001  18.750000  20.110001  11486300  20.110001
1   2019-09-20  21.000000  19.150000  20.180000  19.309999   2011500  19.309999
2   2019-09-23  19.950001  18.540001  19.400000  18.809999    668100  18.809999

抱歉,如果格式不正确 - 这是一个 pastebin 链接,便于阅读:https://pastebin.com/2Vj7am49

一切都是浮点数,除了 Volume (int) 和 Date (datetime) 我使用的是 Seaborn,日期跨度多年 - 2019 年到 2021 年。

【问题讨论】:

  • 那是使用matplotlib,不是seaborn。
  • seaborn 是 matplotlib 的 API,所以说 not seaborn 没有多大意义。
  • 请更新您的问题,详细说明您实际尝试做什么以及为什么您的尝试不起作用。您通过提供不在您发布的问题中的新信息(使用 seaborn,数据跨越多年)拒绝了几个建议的解决方案。这些细节应该在您的问题中。

标签: python pandas datetime matplotlib seaborn


【解决方案1】:

如何对date 对象使用“-”运算符来获取从某个初始日期开始的天数?

# grab earliest date from dataset: firstYear, firstMonth, firstDay
firstDate = datetime.date(firstYear, firstMonth, firstDay)
# read/convert all of your datetime.date objects into an iterable called `dates`
numDaysSinceFirstDate = [(d - firstDate).days for d in dates]

这将是一个标量列表,您可以将其绘制为 (x, y) 时间序列。如果您想保留数据的原始字符串表示形式,您可以使用datetime 对象的isoformat() 属性和set_xticks 方法为seaborn 中的x 轴设置自定义刻度。毫不奇怪,如果您选择将数据与我建议的相反,则有一个相应的set_yticks 方法。

【讨论】:

  • 这可行,但不幸的是它跨越了多年。
  • 我已经更新了我的答案。这是否解决了您的用例@Landon?
猜你喜欢
  • 2013-04-24
  • 1970-01-01
  • 1970-01-01
  • 2019-06-16
  • 2020-04-07
  • 1970-01-01
  • 2018-04-16
  • 1970-01-01
  • 2019-11-09
相关资源
最近更新 更多