Я получаю странный результат, когда пытаюсь построить 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)
Но когда я пытаюсь добавить новый график (простую скользящую среднюю (sma()
)), я получаю очень странный результат. Даты больше не верны, и график выглядит странно. Я не знаю, перезаписывает ли мой новый сюжет оригинал, даже если он должен добавить к существующему сюжету?
Я попытался использовать обе функции ниже, чтобы добавить новый график, но обе дают один и тот же результат.
plot!(sma(df.Closeprice, n=200))
plot!(sma(sort(df, :Date).Closeprice, n=200))
Но я получил тот же результат, где график просто выглядит странно. И я не знаю, что вызывает эту проблему.
Причина в том, что вы строите свой новый график в зависимости от даты, начинающейся с Date(1)
, которая равна 0001-01-01
.
Вам нужно заговорить plot!(df.Date, sma(df.Closeprice, n=200))
.
Кстати, называть запись Date
не лучшая практика, так как Date
уже является именем типа данных.
Да, я думаю, ваш новый сюжет был чем-то вроде plot!(Date.(collect(1:length(df.Closeprice))), sma(df.Closeprice, n=200))
Извините, на самом деле это больше похоже на: plot!(Date(1) .+ Dates.Day.(collect(1:length(df.Closeprice))), sma(df.Closeprice,n=200))
. График без какого-либо значения x увеличивает значение x на 1 день для каждого значения y. Day(2)
однако 2 год
Итак, мой новый график не использовал df.date, вместо этого использовал дату по умолчанию? И да, конечно, я должен изменить запись
Date
на что-то лучшее.