Странные даты в построении графика в Юлии

Я получаю странный результат, когда пытаюсь построить DataFrame. Когда я строю начальный график, он отлично работает.

using DataFrames, XLSX, StatsPlots, Indicators

df = DataFrame(XLSX.readtable("Demo-sv.xlsx", "Blad3")...)
df[!, :Closeprice] .= Float64.(df.Closeprice)

Пример данных

1×2 DataFrame
│ Row │ Date       │ Closeprice │
│     │ Any        │ Float64    │
├─────┼────────────┼────────────┤
│ 1   │ 2019-05-03 │ 169.96     │    

Затем я рисую данные

@df df plot(df.Date, df.Closeprice)

График DataFrame

Но когда я пытаюсь добавить новый график (простую скользящую среднюю (sma())), я получаю действительно странный результат. Даты больше не правильные, и график выглядит странно. Я не знаю, перезаписывает ли мой новый сюжет оригинал, даже если он должен быть добавлен к существующему сюжету?

Я попытался использовать обе функции ниже, чтобы добавить новый график, но обе дают одинаковый результат.

plot!(sma(df.Closeprice, n=200))
plot!(sma(sort(df, :Date).Closeprice, n=200))

Но я получил тот же результат, где график выглядит просто странно. И я не знаю, что вызывает эту проблему.

введите описание изображения здесь


person hbrovell    schedule 21.12.2020    source источник


Ответы (1)


Причина в том, что вы строите новый график по сравнению с датой, начинающейся с Date(1), то есть 0001-01-01. Вам нужно построить plot!(df.Date, sma(df.Closeprice, n=200)).

Между прочим, вызов записи Date - не лучшая практика, поскольку Date уже является именем DataType.

person Oskar    schedule 21.12.2020
comment
Итак, мой новый сюжет не использовал df.date, а использовал дату по умолчанию? И да, конечно, я должен изменить запись Date на что-нибудь получше. - person hbrovell; 21.12.2020
comment
Да, похоже, ваш новый сюжет был что-то вроде plot!(Date.(collect(1:length(df.Closeprice))), sma(df.Closeprice, n=200)) - person Oskar; 21.12.2020
comment
Извините, на самом деле это больше похоже на: plot!(Date(1) .+ Dates.Day.(collect(1:length(df.Closeprice))), sma(df.Closeprice,n=200)). Построение графика без какого-либо значения x увеличивает значение x на 1 день для каждого значения y. Day(2) - это год 2 - person Oskar; 21.12.2020