Improved statistics chart

This commit is contained in:
Filip Znachor 2023-05-05 11:38:12 +02:00
parent 9f44b1dc78
commit 0b4c7d440c

View file

@ -1,6 +1,12 @@
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.chart.renderer.category.StandardBarPainter;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.svg.SVGGraphics2D;
@ -11,6 +17,7 @@ import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.List;
@ -304,13 +311,28 @@ public class Chess {
for (int i = 0; i < players.length; i++) {
List<Integer> delays = players[i].getDelays();
for (int j = 0; j < delays.size(); j++) {
dataset.addValue(delays.get(j), playerNames[i], (j+1)+".");
dataset.addValue(delays.get(j)/1000.0, playerNames[i], (j+1)+".");
}
}
JFreeChart chart = ChartFactory.createLineChart(
"Turn speed", "Turns", "Time (ms)",
JFreeChart chart = ChartFactory.createBarChart(
"Turn speed", "Turns", "Time (s)",
dataset
);
CategoryPlot plot = chart.getCategoryPlot();
plot.setBackgroundPaint(Color.LIGHT_GRAY);
plot.setRangeGridlinePaint(Color.GRAY);
CategoryItemRenderer renderer = plot.getRenderer();
renderer.setDefaultItemLabelGenerator(
new StandardCategoryItemLabelGenerator("{2}", NumberFormat.getInstance())
);
renderer.setDefaultItemLabelFont(new Font("Arial", Font.PLAIN, 9));
renderer.setDefaultItemLabelsVisible(true);
BarRenderer br = (BarRenderer) renderer;
br.setItemMargin(0.05);
br.setBarPainter(new StandardBarPainter());
br.setSeriesPaint(0, Color.WHITE);
br.setSeriesPaint(1, Color.BLACK);
chart.removeLegend();
ChartPanel panel = new ChartPanel(chart);
window.add(panel);