package ww10.gui; import java.awt.Color; import java.util.Map; import java.util.Map.Entry; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.MultiplePiePlot; import org.jfree.chart.plot.PiePlot; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.util.TableOrder; public class ActionPanel extends ChartPanel { private static final long serialVersionUID = -534880050132416786L; private final DataModel dataModel; private final DefaultCategoryDataset dataset; private final String[] rowKeys; private final String[] columnKeys; public ActionPanel(DataModel dataModel) { super(null); this.dataModel = dataModel; String[] playerNames = dataModel.getPlayerNames(); double[][] data = new double[playerNames.length][5]; rowKeys = playerNames; columnKeys = new String[] { "Check", "Bet", "Fold", "Call", "Raise" }; dataset = new DefaultCategoryDataset(); for (int r = 0; r < data.length; r++) { String rowKey = rowKeys[r]; for (int c = 0; c < data[r].length; c++) { String columnKey = columnKeys[c]; dataset.addValue(data[r][c], rowKey, columnKey); } } final JFreeChart chart = ChartFactory.createMultiplePieChart(null, // chart title dataset, // dataset TableOrder.BY_ROW, true, // include legend true, false); final MultiplePiePlot plot = (MultiplePiePlot) chart.getPlot(); final JFreeChart subchart = plot.getPieChart(); final PiePlot p = (PiePlot) subchart.getPlot(); p.setBackgroundPaint(Color.WHITE); // p.setLabelGenerator(new StandardPieItemLabelGenerator("{0}")); // p.setLabelFont(new Font("SansSerif", Font.PLAIN, 8)); // p.setInteriorGap(0.30); p.setBackgroundPaint(null); p.setOutlineStroke(null); setChart(chart); } public void updateActionFrequencies(Map<String, int[]> freq) { for (Entry<String, int[]> entry : freq.entrySet()) { updateActionFrequencies(entry.getKey(), entry.getValue()); } } public void updateActionFrequencies(String player, int[] freq) { for (int c = 0; c < freq.length; c++) { String columnKey = columnKeys[c]; dataset.addValue(freq[c], player, columnKey); } } }