There is a sort of brute-force way of doing this which is potentially nicer: Guide.manual_color_key
See: https://github.com/dcjones/Gadfly.jl/issues/344 On Sunday, September 28, 2014 8:37:57 PM UTC-7, Leah Hanson wrote: > > It don't know if you'll like it better, but here's another way to get the > same effect using Gadfly. The `Scale.discrete_color_manual` controls the > colors used by the scale. > > ~~~ > using Gadfly, DataFrames > > # populate the data in the format from your example > x1 = [1:10]; y1=[12:21] > x2 = [1:10]; y2 = [30:-1:21] > > # make a 3 column DataFrame (x,y,line); maybe not the best way to make a > DataFrame, but it works. > df = DataFrame(Dict((:x,:y,:line),([x1,x2],[y1,y2],[["Line 1" for > i=1:10],["Line 2" for i=1:10]]))) > > # plot the DataFrame > plot(df,x=:x,y=:y,color=:line,Scale.discrete_color_manual("red","purple"),Geom.line,Guide.colorkey("Legend > > title")) > ~~~ > > -- Leah > > On Sun, Sep 28, 2014 at 4:52 PM, Tomas Lycken <[email protected] > <javascript:>> wrote: > >> The only way I’ve figured out to have two layers with different-color >> lines and a legend is to do something like this: >> >> plot( >> layer( >> x = x1, >> y = y1, >> color = ["Line 1" for i in 1:length(x1)], >> Geom.path, >> ), >> layer( >> x = x2, >> y = y2, >> color = ["Line 2" for i in 1:length(x2)], >> Geom.path >> ), >> >> Guide.colorkey("Legend title"), >> ) >> >> This works in that it gives me a legend with the text I want, but it >> doesn’t give me any way to control the color of the lines - I usually do it >> with a Theme(default_color=color("red")) or similar, but since I’ve >> given each datapoint a color value (which isn’t really a color) that >> doesn’t have any effect. >> >> Is there any way I can get a layered plot, where each layer has its own >> legend entry, and at the same time control the color of the plot elements >> in each layer? >> >> // T >> >> > >
