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
>> ​
>>
>
>

Reply via email to