All Downloads are FREE. Search and download functionalities are using the official Maven repository.

tech.tablesaw.plotly.api.BarPlot Maven / Gradle / Ivy

There is a newer version: 0.43.1
Show newest version
package tech.tablesaw.plotly.api;

import tech.tablesaw.api.Table;
import tech.tablesaw.plotly.components.Figure;
import tech.tablesaw.plotly.components.Layout;
import tech.tablesaw.plotly.traces.BarTrace;
import tech.tablesaw.plotly.traces.BarTrace.Orientation;
import tech.tablesaw.plotly.traces.Trace;

class BarPlot {

    protected static final int HEIGHT = 700;
    protected static final int WIDTH = 900;

    protected static Figure create(Orientation orientation, String title, Table table, String groupColName, String numberColName) {

        Layout layout = standardLayout(title).build();

        BarTrace trace = BarTrace.builder(
                table.categoricalColumn(groupColName),
                table.numberColumn(numberColName))
                .orientation(orientation)
                .build();
        return new Figure(layout, trace);
    }

    protected static Figure create(Orientation orientation, String title, Table table, String groupColName, Layout.BarMode barMode, String... numberColNames) {

        Layout layout = standardLayout(title)
                .barMode(barMode)
                .showLegend(true)
                .build();

        Trace[] traces = new Trace[numberColNames.length];
        for (int i = 0; i < numberColNames.length; i++) {
            String name = numberColNames[i];
            BarTrace trace = BarTrace.builder(
                    table.categoricalColumn(groupColName),
                    table.numberColumn(name))
                    .orientation(orientation)
                    .showLegend(true)
                    .name(name)
                    .build();
            traces[i] = trace;
        }
        return new Figure(layout, traces);
    }

    private static Layout.LayoutBuilder standardLayout(String title) {
        return Layout.builder()
                .title(title)
                .height(HEIGHT)
                .width(WIDTH);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy