public static ChartPanel getWhoKillsWhomBarChart(BotStatistic stat) { TreeMap<String, TreeMap<String, Integer>> map = new TreeMap<String, TreeMap<String, Integer>>(); DefaultCategoryDataset ds = new DefaultCategoryDataset(); for (String p : stat.getAllKillingBotNames()) { TreeMap<String, Integer> tm = new TreeMap<String, Integer>(); for (String bn : stat.getAllKillingBotNames()) { tm.put(bn, 0); } map.put(p, tm); } for (Kill k : stat.kills) { TreeMap<String, Integer> tm = map.get(k.killer); int c = tm.get(k.victim); tm.remove(k.victim); tm.put(k.victim, c + 1); } for (String bn : map.keySet()) { TreeMap<String, Integer> usage = map.get(bn); for (String wpn : usage.keySet()) { ds.addValue((Number) usage.get(wpn), wpn, bn); } } JFreeChart c = ChartFactory.createStackedBarChart( "Who how often killed whom", "Killer bot", "Kills by bot", ds, PlotOrientation.VERTICAL, true, true, true); ChartPanel cp = new ChartPanel(c); return cp; }
public static ChartPanel getKillsInTimeByBot(BotStatistic stats) { XYSeriesCollection ds = new XYSeriesCollection(); LinkedList<BotSeries> series = new LinkedList<BotSeries>(); for (String botName : stats.getAllKillingBotNames()) { series.add(new BotSeries(new XYSeries(botName), 0, 0, botName)); } for (BotSeries s : series) { s.series.add(0, 0); } for (Kill k : stats.kills) { for (BotSeries s : series) { if (s.botName.equals(k.killer)) { s.int1++; s.series.add(k.time / 10, s.int1); } } } for (BotSeries s : series) { ds.addSeries(s.series); } JFreeChart c = ChartFactory.createXYLineChart( "Kills by each bot in time", "time [s]", "kills", ds, PlotOrientation.VERTICAL, true, true, true); // XYLineAndShapeRenderer r = (XYLineAndShapeRenderer) // ((XYPlot)c.getPlot()).getRenderer(); // r.setDrawOutlines(true); // r.setShapesVisible(true); ChartPanel cp = new ChartPanel(c); return cp; }
public static ChartPanel getWeaponUseageByBotBarChart(BotStatistic stat) { TreeMap<String, TreeMap<String, Integer>> map = new TreeMap<String, TreeMap<String, Integer>>(); DefaultCategoryDataset ds = new DefaultCategoryDataset(); for (String p : stat.getAllKillingBotNames()) { map.put(p, new TreeMap<String, Integer>()); } for (Kill k : stat.kills) { TreeMap<String, Integer> usage = map.get(k.killer); if (usage.containsKey(k.gunUsed)) { int c = usage.get(k.gunUsed); usage.remove(k.gunUsed); usage.put(k.gunUsed, c + 1); } else { usage.put(k.gunUsed, 1); } } for (String bn : map.keySet()) { TreeMap<String, Integer> usage = map.get(bn); for (String wpn : usage.keySet()) { ds.addValue((Number) usage.get(wpn), wpn, bn); } } JFreeChart c = ChartFactory.createStackedBarChart( "Weapon use by each bot", "Bot", "Weapon usage", ds, PlotOrientation.VERTICAL, true, true, true); ChartPanel cp = new ChartPanel(c); return cp; }