2014-12-10 2 views
4

Я использую Gadfly для обработки данных в Julia. У меня есть x = массив поплавков и несколько y1, y2, y3 ... совпадающей длины. Как построить все точки (x, y1) зеленым цветом (x, y2) красным цветом и т. Д. На одном участке Gadfly?Как переназначить множество массивов данных в одном гадости?

ответ

6

Вы можете поместить данные в DataFrame с тремя колонками, x, y и group и использовать группу в качестве цветовой эстетики.

# Sample data 
n = 10 
x = collect(1:n) 
y1 = rand(n) 
y2 = rand(n) 
y3 = rand(n) 

# Put the data in a DataFrame 
using DataFrames 
d = DataFrame( 
    x = vcat(x,x,x), 
    y = vcat(y1,y2,y3), 
    group = vcat(rep("1",n), rep("2",n), rep("3",n)) 
) 

# Plot 
using Gadfly 
plot( 
    d, 
    x=:x, y=:y, color=:group, 
    Geom.point, 
    Scale.discrete_color_manual("green","red","blue") 
) 

Plot

Как указывается в комментариях, можно также использовать слои:

plot(
    layer(x=x, y=y1, Geom.point, Theme(default_color=color("green"))), 
    layer(x=x, y=y2, Geom.point, Theme(default_color=color("red"))), 
    layer(x=x, y=y3, Geom.point, Theme(default_color=color("blue"))) 
) 
+3

Метод dataframe является самым простым для того, что вы хотите сделать. Однако для более сложных участков вы также можете посмотреть слои Овода. Создание нескольких слоев в одном сюжете может выполнить одно и то же для более сложных наборов данных. –

+0

Сначала я попробовал слои, но получил ошибки, пытаясь поместить разные x, y в каждый слой. Опять же, я новичок в Gadfly и, возможно, делал несколько ошибок. – DarenW