コード例 #1
0
  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;
  }
コード例 #2
0
  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;
  }
コード例 #3
0
  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;
  }