V tomto článku vám představím mojí třídu LineChart, díky které je možné generovat spojnicové grafy s ruznými rozmezími vstupních hodnot z proudu přidávaných dat. Tato třída dovoluje zadávat minimální a maximální vstupní data, barvu grafu a pozadí grafu, velikost okna, titulek okna a tak dále. Tuto třídu jsem si napsal především kvůli mému novému arduinu - například k orientačnímu sledování hodnot na analogových pinech.
V tomto článku vám demonstračně ukážu, jak třída funguje. Demontraci si předvedeme na generátoru pseudonáhodných čísel, který bude číslarovnou přenášet do grafu. Ukážeme si, jak bude vypadat graf s generováním pseodonáhodných čísel pomocí metody Math.random().
V předchozí flashové ukázce je vidět, jak graf vypadá při použití prvního (základního) konstruktoru. Ten je nastaven tak, že má černou barvu pozadí, zelenou barvu grafu a vytváří okno v rozlišení 640x480px. Vstupní parametry základního konstruktoru jsou jen minimální a maximální vstupní hodnota - pokud je hodnota mimo rozmezí, třída vyvolá výjimku!
Nyní si ukážeme kód předchozí ukázky:
public class Main {
public static void main(String[] args) {
double random;
//vytvoreni instance tridy LineChart
LineChart graf = new LineChart(0, 100);
//vykresli okno
graf.drawChart();
//cyklus pridavajici data do grafu
while(true) {
try {
//nahodne cislo v rozmezí 0 az 100
random = Math.random() * 100;
//pridani cisla do grafu
graf.addElement((int) random);
//uspani vlakna na 0,1s
Thread.sleep(100);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
}
Jak je vidět v předchozí ukázce, tak nejrpve musíme založit instanci třídy LineChart. kterou si můžete stáhnout na konci tohoto článku. Dále okno zviditelníme a začneme vykreslování pomocí metody drawChart(). Samotné přidávání hodnot do grafu se provádí pomocí metody addElement(int hodnota).
Dále při vytváření objektu můžeme použít druhého konstruktoru, který nám dovolí rozmanitější nastavení.
Ten má následující stavbu:
LineChart(int minInputValue, int maxInputValue, Color graphColor, Color backgroundColor, String windowName, int wWidth, int wHeight)
Takže si můžeme vyhrát i s velikostí okna, barvami v grafu a tak podobně - prostě jak se to zrovna hodí.
V závěru bych jen rád poděkoval Petru Mikovi za pomoc v jednom matematickém výpočtu :).
A zde si již můžete stahovat třídu LineChart.java.
