Tworze serwlet, jsp + html. Mam już 3 tablece z danymi teraz chce po prostu wpuścić to w jakąś gotową klase, żeby w efekcie zyskać wykres. Niech mi ktoś podrzuci jakiś prosty przykład, starałem sie użyć "jfreechart" ale jest to dla mnie skomplikowane. Prosił bym o wyjaśnienie tworzenie albo niech ktoś poleci dobrego tutka :)
Jfreechart jest przecież dosyć łatwy w obsłudze i w internecie na oficjalnej stronie fajne przykłady znajdziesz.
Jeśli robisz proste wykresy to ja bym nawet sam sobie to napisał i miał to co potrzebuję, a nie głowił się jak zrobić coś prostego wśród setek niepotrzebnych mi rozbudowanych opcji.
Wykresy słupkowe - prościzna
Wykresy kołowe - tak samo, w podstawówce się na kartce to samemu robiło.
Wykresy liniowe też nic specjalnie trudnego. Bierzesz komponent tłumaczysz współrzędne tylko na układ kartezjański i gotowe.
Rzeczywiście dość prosto to wyglada dajmy na przykład coś takiego:
public class PieChartExample {
public static void main(String arg[]){
//Dane do wykresu 3d
XYSeries series = new XYSeries("XYGraph");
series.add(1, 1);
series.add(1, 2);
series.add(2, 4);
series.add(3, 4);
series.add(4, 2);
series.add(5, 9);
series.add(6, 10);
XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series);
//Tworzymy wykres XY
JFreeChart chart = ChartFactory.createXYLineChart(
"Wykres XY",//Tytuł
"x- Lable", // x-axis Opis
"y- Lable", // y-axis Opis
dataset, // Dane
PlotOrientation.VERTICAL, // Orjentacja wykresu /HORIZONTAL
true, // pozkaż legende
true, // podpowiedzi tooltips
false
);
//Dodanie wykresu do okna
ChartFrame frame1=new ChartFrame("XYArea Chart",chart);
frame1.setVisible(true);
frame1.setSize(500,400);
}
}
}
To teraz kwestia jak to wyświetlić w na stronie .html przez plik.jsp ? Jedyne co mi przychodzi do głowy to żeby zapisać wyjściowy wykres jako np. .png a potem sobie w kodzie htlm'owym wyświetlić obraz. Jakieś inne sposoby ?
ChartFrame dziedziczy po JFrame (ale masz też ChartPanel), więc w jsp nic z tym nie zrobisz, ale spokojnie przenieść możesz to na kontrolce z jsp pokazać.
Nie rozumiem drugiej części, co przenieść na kontrolce (miałem w planie zapisać obraz wynikowy a potem oddzielnie wczytać go w .jsp przez "input img....") ale chyba masz coś innego na myśli :) to weź podpowiedz jak to zrobić najbardzej profesjonalnie :)
http://javabeanz.wordpress.com/2007/07/10/displaying-dynamic-charts-in-a-jsp-page-jfreechart/
Bierzesz se generujesz obrazek /tmp/obrazek1.png
Do JSP przekazujesz samą nazwę na zasadzie:
<img href="obrazek.servlet?v=obrazek1.png"/>
Przepisujesz kawalek kodu z linka modyfikując go tak by pobierał parametr z nazwą obrazka i grzebał po twojej ścieżce.
Jak to działa w praktyce? W momencie wysłania żądania do serwera generowany jest obrazek, a jego identyfikator jest wysyłany w htmlu. Przeglądarka zaczyna pobierać obrazek, ale nie bezpośrednio, ale przez odpowiedni servlet, który wygrzebuje tenże obrazek na podstawie ID.