SubplotExample.java
/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package tech.tablesaw.examples;
import java.util.concurrent.atomic.AtomicInteger;
import tech.tablesaw.api.Table;
import tech.tablesaw.plotly.Plot;
import tech.tablesaw.plotly.components.Figure;
import tech.tablesaw.plotly.components.Grid;
import tech.tablesaw.plotly.components.Layout;
import tech.tablesaw.plotly.traces.HistogramTrace;
import tech.tablesaw.plotly.traces.Trace;
/**
* Renders a 2 (row) by 4 (col) grid of histograms, one for each of the 8 numeric columns in the
* tornadoes dataset
*/
public class SubplotExample {
public static void main(String[] args) throws Exception {
Table table = Table.read().csv("../data/tornadoes_1950-2014.csv");
AtomicInteger order = new AtomicInteger(0);
Trace[] traces =
table.numericColumns().stream()
.map(
f -> {
int i = order.incrementAndGet();
return HistogramTrace.builder(f.asDoubleArray())
.name(f.name())
.xAxis("x" + i)
.yAxis("y" + i)
.build();
})
.toArray(Trace[]::new);
int columns = 2;
Grid grid =
Grid.builder()
.columns(columns)
.rows(traces.length / columns)
.pattern(Grid.Pattern.INDEPENDENT)
.build();
Layout layout = Layout.builder().title("Subplot").width(1000).height(700).grid(grid).build();
Plot.show(new Figure(layout, traces));
}
}