Как добавить Legend в график при использовании пакета Gadfly.jl в Julia
Я использую Julia для обработки финансовых данных, а затем рисует графики на основе финансовых данных.
на X-оси графика Я планирую даты (в день цены) на оси Y Я планирую цены акций, MovingAverage13 и MovingAverage21
В настоящее время я использую DataFrames для построения данных
Code-
df=DataFrame(x=dates,y1=pricesClose,y2=m13,y3=m21)
l1=layer(x="x",y="y1",Geom.line,Theme(default_color=color("blue")));
l2=layer(x="x",y="y2",Geom.line,Theme(default_color=color("red")));
l3=layer(x="x",y="y3",Geom.line,Theme(default_color=color("green")));
p=plot(df,l1,l2,l3);
draw(PNG("stock.png",6inch,3inch),p)
Я получаю графы правильно, но я не могу добавить Легенду в Графе, которая показывает синюю линию для Красных линий Закрыть Цены для скользящего среднего 13 зеленая линия для скользящего среднего 21
Как добавить легенду на график?
Ответы
Ответ 1
Я понимаю из комментариев в этой ссылке, что в настоящее время невозможно получить легенду для списка слоев.
Gadfly основан на Hadley Wickhams ggplot2 для R, и, таким образом, обычный шаблон состоит в том, чтобы упорядочить данные в DataFrame с дискретным столбцом для целей маркировки. В вашем случае такой подход будет выглядеть так:
x = 1:10
df1 = DataFrame(x=x, y=2x, label="double")
df2 = DataFrame(x=x, y=x.^2, label="square")
df3 = DataFrame(x=x, y=1./x, label="inverse")
df = vcat(df1, df2, df3)
p = plot(df, x="x", y="y", color="label", Geom.line,
Scale.discrete_color_manual("blue","red", "green"))
draw(PNG("stock.png", 6inch, 3inch), p)
Ответ 2
Теперь вы можете попробовать с помощью manual_color_key. Единственное изменение в вашем коде необходимо здесь:
p=plot(df,l1,l2,l3, Guide.ylabel("Some text"), Guide.title("My title"), Guide.manual_color_key("Legend", ["I'm blue l1", "I'm red l2", "I'm green l3"], ["blue", "red", "green"]))