2016-11-12 5 views
0

Когда я нажимаю новый слой на существующий участок, он сохраняет тот же цвет. Есть ли способ автоматически изменить цвет, когда новый слой будет перенесен на график или, по крайней мере, способ установить цвет с использованием случайного числа (я заранее не знаю, сколько слоев у меня будет)?Овод, новый цвет/слой

y=[3, 7, 5, 1] 
x=[1, 2, 3, 4] 
xmin1 = x .- 0.1 
xmax1 = x .+ 0.1 

xmin2 = x .- 0.5 
xmax2 = x .- 0.3 

y=[3, 7, 5, 1] 
x=[1, 2, 3, 4] 
xmin1 = x .- 0.1 
xmax1 = x .+ 0.1 

xmin2 = x .- 0.5 
xmax2 = x .- 0.3 

p = plot(xmin=xmin1, xmax=xmax1, y=[3, 7, 5, 1], Geom.bar) 

# The following creates a new layer that keeps the same color 
push!(p, layer(xmin=xmin2, xmax=xmax2, y=[3, 7, 5, 1], Geom.bar)) 

# I do not want to use this because I don't know how many layers I will have 
# push!(p, layer(xmin=xmin2, xmax=xmax2, y=[3, 7, 5, 1], Geom.bar, 
# Theme(default_color=colorant"green"))) 

ответ

1

Одно из возможных решений:

Using Colors 
function gen_colors(n) 
    cs = distinguishable_colors(n, 
     [colorant"#FE4365", colorant"#eca25c"], # seed colors 
     lchoices=Float64[58, 45, 72.5, 90],  # lightness choices 
     transform=c -> deuteranopic(c, 0.1), # color transform 
     cchoices=Float64[20,40],    # chroma choices 
     hchoices=[75,51,35,120,180,210,270,310] # hue choices 
) 
end 

mycolors = gen_colors(n) 

во время выполнения вы вызываете эту функцию с количеством слоев, чтобы добавить в сюжете затем использовать элементы возвращаемого массива в качестве аргументов default_color. А именно, для i-го слоя используют

Theme(default_color=mycolors[i]) 
Смежные вопросы