С помощью Plots.jl вы можете сделать следующее (я передаю полностью воспроизводимый код):
julia> df = DataFrame(c=rand(Bool, 100), x = 2 .* rand(100) .- 1);
julia> df.y = ifelse.(df.c, 1, -1) .* df.x .^ 2;
julia> plot(df.x, df.y, color=ifelse.(df.c, "blue", "red"), seriestype=:scatter, legend=nothing)
Однако в этом случае я бы дополнительно использовал StatsPlots.jl, так как тогда вы можете просто написать:
julia> using StatsPlots
julia> @df df plot(:x, :y, group=:c, seriestype=:scatter, legend=nothing)
Если вы хотите сделать это вручную по группам, проще всего использовать функцию groupby
:
julia> gdf = groupby(df, :c);
julia> summary(gdf) # check that we have 2 groups in data
"GroupedDataFrame with 2 groups based on key: c"
julia> plot(gdf[1].x, gdf[1].y, seriestype=:scatter, legend=nothing)
julia> plot!(gdf[2].x, gdf[2].y, seriestype=:scatter)
Обратите внимание, что переменная gdf
привязана к GroupedDataFrame
объект, из которого вы можете получить группы, определенные столбцом группировки (:c
) в этом случае.