11. august 2004 - 11:43Der er
81 kommentarer og 1 løsning
Hvordan bruger man JFreeChart?
Jeg har hentet den sidste nye version af grafer hos http://www.jfree.org/jfreechart/. Jeg skal bruge en af graferne - nemlig præcis den som hedder moving average. Er der en som kan tage den ud af hele pakker - så jeg kun få nøjagtig de filer som skal bruge. Jeg vil selv kunne angive de værdier som grafen modtager. Endvidere ville det være fedt hvis dem blev sat ind på en html-side.
Hvis dette ikke er point nok - så må I jo bare sige til.
I et inbound callcenter, hvor identiteten på den, der ringer ind, skal bekræftes, kan kontrollen nu foregå i telefonkøen. Det understøtter fem centrale KPI'er for callcentre.
public class MovingAverageDemo extends ApplicationFrame { public MovingAverageDemo(String title, String data, int y1, int m1, int y2, int m2, double[] val) { super(title); TimeSeries ts1 = new TimeSeries(data, Month.class); int y = y1; int m = m1; int ix = 0; while((y < y2) || (m <= m2)) { ts1.add(new Month(m, y), val[ix]); m++; if(m > 12) { y++; m = 1; } ix++; } TimeSeries ts2 = MovingAverage.createMovingAverage(ts1, "6 month mov.avg. of " + data, 6, 0); TimeSeriesCollection dataset = new TimeSeriesCollection(); dataset.addSeries(ts1); dataset.addSeries(ts2); JFreeChart chart = ChartFactory.createTimeSeriesChart(title, "Time", "Value", dataset, true, true, false); StandardLegend legend = (StandardLegend)chart.getLegend(); legend.setDisplaySeriesShapes(true); XYPlot plot = chart.getXYPlot(); XYItemRenderer renderer = plot.getRenderer(); if (renderer instanceof StandardXYItemRenderer) { StandardXYItemRenderer rr = (StandardXYItemRenderer) renderer; rr.setPlotShapes(true); rr.setShapesFilled(true); } DateAxis axis = (DateAxis)plot.getDomainAxis(); axis.setDateFormatOverride(new SimpleDateFormat("MMM-yyyy")); ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new Dimension(500, 300)); setContentPane(chartPanel); pack(); setVisible(true); } public static void main(String[] args) { double[] x = { 1, 4, 9, 16, 25, 36, 30, 24, 18, 12, 6, 0, 32, 48, 56, 60, 62, 63 }; MovingAverageDemo mad = new MovingAverageDemo("Moving Average Demo", "test data", 2003, 1, 2004, 6, x); } }
Så vidt jeg ved er jfreechart mest til fat client (Swing GUI) og ikke til web brug.
Imidlertid er der noget servlet support i softwaren og hvis du: - virkeligt vil have det som web løsning - du har en JSP/Servlet engine på din web server så skal jeg gerne prøve at konvertere eksemplet til servlet.
C:\>jar tvf movavgapp.jar 0 Wed Aug 11 19:12:54 CEST 2004 META-INF/ 124 Wed Aug 11 19:12:54 CEST 2004 META-INF/MANIFEST.MF 4444 Wed Aug 11 19:11:14 CEST 2004 MovingAverageApplet.class
C:\>jar tvf movavgapp.jar 0 Wed Aug 11 19:12:54 CEST 2004 META-INF/ 124 Wed Aug 11 19:12:54 CEST 2004 META-INF/MANIFEST.MF 4444 Wed Aug 11 19:11:14 CEST 2004 MovingAverageApplet.class
C:\>jar tvf movavgapp.jar 0 Wed Aug 11 19:12:54 CEST 2004 META-INF/ 124 Wed Aug 11 19:12:54 CEST 2004 META-INF/MANIFEST.MF 4444 Wed Aug 11 19:11:14 CEST 2004 MovingAverageApplet.class
:jar tvf movavgapp.jar 0 Thu Aug 12 16:34:50 CEST 2004 META-INF/ 124 Thu Aug 12 16:34:50 CEST 2004 META-INF/MANIFEST.MF 2558 Thu Aug 12 16:20:48 CEST 2004 MovingAverageApplet.java
Det er også MovingAverageApplet.java jeg har compilet(bare så du ikke tror at det er det som er fejlen! Altså har jeg ikke en fil som hedder MovingAverageDemo.java - det var en skrive fejl fra min side:-))
Ja - det er fedt. Jeg siger rigtig mange tak! Det er sku fedt at der er sådan nogle som dig her på Eksperten. Du er nærmest den enest som kan give et ordentlig svar. Mange andre søger lige lidt her på eksperten eller google, og uden at vide en klap om hvad de poster, så bare indsætter en link! Tak for hjælpen
Findes der en form for dokumentation over de klasse som JFreechar indeholder? Altså så man foreksemåel ved hvilke parametre den forskellige data tager?
Diagnostic-Code: smtp;552 5.2.3 This message is larger than the current system limit or the recipient's mailbox is full. Create a shorter message body or remove attachments and try sending it again.
Så vidt jeg kan finde frem til - er det her gennemsnitet bliver udregnet:-) Men jeg har ændret lidt i koden, og nu ligger graferne ovenpå hinanden. Det synes jeg er rimligt mærkeligt. (istedet for 6 har jeg brugt længden af x)
Det virker lidt som om funktionen ikke udregner et gennemsnit - men bare angiver værdierne. Og det forstå jeg ikke.
Det 6 angiver hvormange punkter gennemsnitsgrafen skal have, men det betyder jo ikke at de vil komme til at ligge ovenpå hinanden selvom begge grafer har samme antal punkter.
okay - men får var 6 hardkodet ind i koden, og nu får den 11 - og grafen er den sammen. Selvom jeg gider den 1 - forbliver grafen den samme. Jeg forstår det var ikke.
Nu har jeg prøvet at sætte 6=100:-) Men det giver stadigvæk den samme graf. Det virker nærmeste som om - den createMovingAverage-funktion ikke virker(eller jeg gider den noget forkert med:-) )
Okay - jeg må sige at det ser anderledes ud hos mig. Jeg skal minimun angives et tal på 1000 for at det virker. Man kan det have noget at gøre med at jeg sekunder på akserne? Også konverteter det til timer, dage, måneder og år.
Det er ikke særligt veldefineret hvad "forkert" er i denne sammenhæng.
Jo længere interval jo mere udjævnet.
Det giver ikke meget mening med et interval større end forskellen på første og sidste observation.
Ofte bruger man det til sæson udjævning og så vil man have et interval på 12 for måneds tal, 4 for kvartals tal etc..
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.