【问题标题】:Plot dates in a time series on a x axis [duplicate]在 x 轴上绘制时间序列中的日期 [重复]
【发布时间】:2021-10-14 06:56:13
【问题描述】:

我正在尝试在 5 年时间序列图表上绘制日期 (N=50),但我无法弄清楚如何在 for 循环中运行迭代。下面是我尝试绘制日期的示例。

Visual of what I'm plotting dates on

目前,我正在尝试:

for date in dataframe_with_dates.DATE:
    plt.axvline(x = date, color = 'g')

plt.show()

我收到以下错误: Failed to convert value(s) to axis units: 'DATE'

我不确定这是否与 dtype 是日期时间有关,或者我是否需要尝试其他方法,但非常感谢任何建议/指导!

谢谢!

这就是我想要完成的:Example image

编辑:生成情节的代码

def plot_df(df_1, x, y, title = '', xlabel = 'DATE', ylabel = 'VALUE', dpi = 100):
    plt.figure(figsize = (25,5), dpi = dpi)
    plt.plot(x, y, color = 'tab:red')
    plt.gca().set(title = title, xlabel = xlabel, ylabel = ylabel)
    plt.show()

plot_df(df_VIX, x = df_VIX.DATE, y = df_VIX.AVG_VALUE, title = 'Daily VIX since 1990')

`

data_test = [['2016-01-04', 22.48, 23.36, 20.67, 20.70, 21.8025],
         ['2016-01-05', 20.75, 21.06, 19.25, 19.34, 20.1],
         ['2016-01-06', 21.67, 21.86, 19.8, 20.59, 20.98],
         ['2016-01-07', 23.22, 25.86, 22.4, 24.99, 24.1175],
         ['2016-01-08', 22.96, 25.86, 22.40, 24.99, 24.89]]
df_test = pd.DataFrame(data_test, columns = ['DATE','OPEN','HIGH','LOW','CLOSE', 'AVG_VALUE'])

df_test['DATE'] = pd.to_datetime(df_test['DATE'])

这将重现我正在使用的确切数据的样本。

【问题讨论】:

  • 您能否提供有关dataframe_with_dates 的更多信息(内容、数据类型和生成当前绘图的代码行)?事实上,我无法重现您的错误:使用包含日期时间的数据框,我能够显示垂直线。 Pandas 版本也可能是有用的信息。
  • dataframe_with_dates包含DATE, OPEN, HIGH, LOW, CLOSE, AVG的6个变量。除了 DATE 之外的所有 float64,即 datetime64[ns] 生成该图的代码行在 OP 中进行编辑。
  • 如果您将代码 sn-p 与您的数据框的几行共享会有所帮助,这样我们就可以将其复制到我们的编辑器中并对解决方案进行原型设计。到目前为止,没有看到代码和值,很难提供帮助。谢谢!
  • @TCArlen 我已将其添加到 OP 中。
  • @nonin 我将它添加到 OP

标签: python pandas matplotlib data-science quantitative-finance


【解决方案1】:

我想这就是你想要的:

df_test.plot(x='DATE', y='OPEN')

或将y='OPEN' 替换为另一列以进行绘图。 x 轴将由 pandas 自动格式化为与您在图中显示的相似。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 2014-06-02
    • 1970-01-01
    • 2019-04-22
    • 2016-07-29
    • 2015-08-13
    相关资源
    最近更新 更多