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

)
- 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
JetChart
- vie vykreslovat grafy ale este som nenasiel prepojenie s wicketom. ziaden priklad
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!)
- pouzival ju aj robo v jeho praci (viem si odkukat ako to on robil)
- odporucali ju ludia z wicketu
- je urobena pre javu
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