Я использую Gadfly для обработки данных в Julia. У меня есть x = массив поплавков и несколько y1, y2, y3 ... совпадающей длины. Как построить все точки (x, y1) зеленым цветом (x, y2) красным цветом и т. Д. На одном участке Gadfly?Как переназначить множество массивов данных в одном гадости?
4
A
ответ
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(
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")))
)
0
Такого рода вещи просто с моим пакетом https://github.com/tbreloff/Plots.jl:
julia> using Plots; scatter(rand(10,3), c=[:green,:red,:blue])
Метод dataframe является самым простым для того, что вы хотите сделать. Однако для более сложных участков вы также можете посмотреть слои Овода. Создание нескольких слоев в одном сюжете может выполнить одно и то же для более сложных наборов данных. –
Сначала я попробовал слои, но получил ошибки, пытаясь поместить разные x, y в каждый слой. Опять же, я новичок в Gadfly и, возможно, делал несколько ошибок. – DarenW