Analyzovanie vykreslovania grafov

Hladal som rozne sposoby ako vykreslit graf. Uznal som za najvhodnejsie vybrat taku kniznicu ktora by podporovala vykreslenie v swing aplikacii a sucasne vo web aplikacii, aby sa mohli pouzit zdrojove kody v oboch aplikaciach. Predsa nato bolo vymyslene objektove programovanie.

Jednotlive kniznice

AmChart

  • tato kniznica bola velakrat odporucana ludmi z wicketu avsak skor pre programovanie v php.
  • prvorado urcena pre kreslenie financnych grafov avsak ma podporu aj pre kreslenie klasickych grafov
  • nedokazal som najst kniznicu pre javu, tak som potom ani dalej nestudoval tuto kniznicu

JFreeChart

  • Je kniznica na vytvaranie profesionalnych a kvalitnych grafov.
  • podporuje rozne formy vystupov ako swing, obrazkove (PNG, JPEG),
  • je open source a free
  • interaktivne zoomovanie
  • daju sa pouzit events mysi
  • pracuje v aplikaciach, JSP, sevlete a applete
  • je napisany v jave
  • pisali ho tyto ludia:
Richard Atkinson, David Berry, Anthony Boulestreau, Jeremy Bowman,Daniel Bridenbecker, Nicolas Brodu, David Browning, Søren Caspersen, Chuanhao Chiu, Pascal Collet, Martin Cordova, Paolo Cova, Michael Duffy, Jonathan Gabbai, Serge V. Grachov, Hans-Jurgen Greiner, Joao Guilherme Del Valle, Aiman Han, Jon Iles, Wolfgang Irler, Xun Kang, Bill Kelemen, Norbert Kiesel, Gideon Krause, Arnaud Lelievre, David Li, Tin Luu, Craig MacFarlane , Achilleus Mantzios, Thomas Meier, Aaron Metzger, Jim Moore, Jonathan Nash, Barak Naveh, David M. O’Donnell, Krzysztof Paz, Tomer Peretz, Andrzej Porebski, Luke Quinane, Viktor Rajewski, Eduardo Ramalho, Michael Rauch, Cameron Riley, Dan Rivett, Michel Santos, Thierry Saura, Andreas Schneider, Jean-Luc Schwab, Bryan Scott, Roger Studner, Irv Thomae, Eric Thomas, Rich Unger, Daniel van Enckevort, Laurence Vanhelsuw´e, Sylvain Vieujot, Jelai Wang, Mark Watson, Alex Weber, Matthew Wright, Christian W. Zuckschwerdt, Hari and Sam (oldman). (uz ked som to nasiel mi prislo luto to sem nedat big grin )

  • podporovana aj wicketom a casto odporucana od ludi z wicketu
  • kedze by sa dala pouzit ta ista kniznica aj pre wicket tak by to asi bolo o to lahsie kedze by sa tie iste triedy vyuzili pri swing a web aplikacii

ofc4j

  • Open Flash Chart for Java
  • open source
  • kresly podobne grafy ako google graf creator
  • ma podporu pre wicket aj pre swing
  • priklad na graf s wicketom si mozte pozriet tu: http://cwiki.apache.org/WICKET/open-flash-chart-and-wicket.html
  • celkovy pohlad na tuto kniznicu mi pripadal dost nesimpaticky a nenasiel som vela prikladov na tvorbu s touto kniznicou.

elegantjcharts

  • nie je zadarmo takze u mna prehral big grin

JetChart

  • vie vykreslovat grafy ale este som nenasiel prepojenie s wicketom. ziaden priklad

Vyber kniznice JFreeChart

Tak preco som sa rozhodol prave pre tuto kniznicu:

  • je k nej vela prikladov na nete
  • ma vela druhov grafov
  • prehladne kody
  • mam k nej knizku ktora stoji 65 dolarov (v akcii!) big grin
  • pouzival ju aj robo v jeho praci (viem si odkukat ako to on robil)
  • odporucali ju ludia z wicketu
  • je urobena pre javu

Ukazka kodu s JFreeChart

XY graf pre swing:

//Dataset - udaje pre graf, klasicke x, y

XYSeries series = new XYSeries("Average Size");
        series.add(2, 1);
        series.add(4, 2);
        series.add(6, 3);
XYDataset xyDataset = new XYSeriesCollection(series);
//vytvorenie grafu a nastavenie vlastnosti grafu
JFreeChart chart = ChartFactory.createXYLineChart(null, null, null, xyDataset, PlotOrientation.HORIZONTAL, rootPaneCheckingEnabled, rootPaneCheckingEnabled, rootPaneCheckingEnabled);

chart.setBorderVisible(false);
//vytvorenie noveho okna pre graf
ChartFrame f = new ChartFrame("Hello World", chart);
f.pack();
f.setSize(800, 600);
f.setVisible(true);

XY graf pre web s wicketom:

//udaje pre graf, klasicke x, y

XYSeries series = new XYSeries("Average Size");
        series.add(2, 1);
        series.add(4, 2);
        series.add(6, 3);
XYDataset xyDataset = new XYSeriesCollection(series);
//vytvorenie grafu a nastavenie vlastnosti grafu
JFreeChart chart = ChartFactory.createXYLineChart(null, null, null, xyDataset, PlotOrientation.HORIZONTAL, rootPaneCheckingEnabled, rootPaneCheckingEnabled, rootPaneCheckingEnabled);
//pridanie do stranky ale predtym este vola jednu triedu pre vlastnosti toho image
add(new JFreeChartImage("image", chart, 300, 300));

Trieda JFreeChartImage

public class JFreeChartImage extends Image {
   
          private int width;
          private int height;

          public JFreeChartImage(String id, JFreeChart chart, int width, int height){
         super(id, new Model(chart));
         this.width = width;
         this.height = height;
      }

      @Override
          protected Resource getImageResource() {
              return new DynamicImageResource(){
      @Override
      protected byte[] getImageData() {
                JFreeChart chart = (JFreeChart)getDefaultModelObject();
                    return toImageData(chart.createBufferedImage(width, height));
      }

      @Override
      protected void setHeaders(WebResponse response) {
              if (isCacheable()) {
                  super.setHeaders(response);
              } else {
                  response.setHeader("Pragma", "no-cache");
                  response.setHeader("Cache-Control", "no-cache");
                  response.setDateHeader("Expires", 0);
              }
          }
              };
         }
      
}

HTML:

<html>
<body>
       <img wicket:id="image">
</body>
</html>

Ukazky grafov s kniznicou JFreeChart

Topic attachments
I Attachment Action Size Date Who Comment
elsejnlp jfreechart-1.0.13-demo.jnlp manage 0.8 K 26 Oct 2009 - 00:57 UnknownUser Ukaykz grafov s kniznicou JFreeChart
Topic revision: r2 - 31 Oct 2009 - 16:54:48 - MiroslavAntl
 
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback