Документация Engee

Группирование графиков

Вы можете строить графики данных из DataFrame и группировать их в соответствии со значением столбца.

Содержимое набора данных CO2 поясняется здесь.

import RDatasets: dataset
using GenieFramework, DataFrames, PlotlyBase
@genietools

const data = dataset("datasets", "CO2")

@app begin
    @out trace =  scatter(data, x=:Conc, y=:Uptake, group=:Treatment, mode="markers")
    @out layout = PlotlyBase.Layout(;xaxis_title="Concentration", yaxis_title="Uptake", legend_title_text = "Treatment")
end

ui() = GenieFramework.plot(:trace, layout = :layout)
@page("/",ui)

Задание пользовательских цветов и маркеров

При построении графика содержимого из DataFrame scatter и другие генераторы трассировки принимают функции в качестве аргументов и применяют их к DataFrame. Дополнительные сведения см. в справке по PlotlyBase.GenericTrace. При наличии аргумента group функция применяется к каждому вложенному DataFrame.

import RDatasets: dataset
using GenieFramework, DataFrames, PlotlyBase
@genietools

const data = dataset("datasets", "CO2")

# функция для задания цвета каждой точки в соответствии со столбцом Treatment
color_dict = Dict("nonchilled" => "red", "chilled" => "blue")
plot_color(x) = getindex.(Ref(color_dict), x.Treatment)
# функция для задания маркера каждой точки в соответствии со столбцом Type
symbol_dict = Dict("Quebec" => "cross", "Mississippi" => "square")
plot_marker(x) = attr(symbol=getindex.(Ref(symbol_dict), x.Type), size=8)

@app begin
    @out trace =  PlotlyBase.scatter(data, x=:Conc, y=:Uptake, group=[:Treatment, :Type], mode="markers", color=plot_color,  marker=plot_marker)
    @out layout = PlotlyBase.Layout(;xaxis_title="Concentration", yaxis_title="Uptake", legend_title_text = "Treatment, Type")
end

ui() = GenieFramework.plot(:trace, layout = :layout)
@page("/",ui)