# Brauche hilfe bei Diagramm!



## Butt (16. Juni 2004)

Hallo,

für ein projekt soll ich ein passendes Diagramm programmieren.
dabei soll nicht nur gezeichnet werden, sondern die daten systematisch in bildschirmkoordinaten konvertiert werden, mit awt oder swing.
daten sind egal, es geht nur ums diagramm.
habe zwar ein java-buch, aber da steht überhaupt nichts über diagramme, deswegen wende ich mich an euch. 

wenn noch etwas unklar ist, bitte beescheid sagen.

für alle hilfen bedanke ich mich schon jetzt mal.
Danke


----------



## Franz Degenhardt (16. Juni 2004)

Was für Werte hast du und was für eine Art von Diagramm willst du erzeugen?

Wenn du z.B. das Alter von Menschen und deren Anzahl von Gehirnzellen hast, trägst du einfach für jedes Wertepaar ein Punkt in ein Koordinatensystem ein. Das Koordinatensystem musst du dir natürlich selber bauen. 
Bei einem Säulendiagramm malst du statt einem Punkt eine Säule.

Und was genau ist dein Problem, kennst du dich mit guis in Java aus?

Grüsse TrueSun


----------



## Thomas Darimont (16. Juni 2004)

Hallo!

Schau dir doch mal jFreeCHart an: http://www.jfree.org/jfreechart/index.html

Gruß Tom


----------



## Butt (16. Juni 2004)

ja, danke erstmal.
hat mir sehr geholfen der link.
sorry das die frage n bißchen unklar war.

vielen dank;-)


----------



## Snape (16. Juni 2004)

> _Original geschrieben von Thomas Darimont _
> *Hallo!
> 
> Schau dir doch mal jFreeCHart an: http://www.jfree.org/jfreechart/index.html
> ...



JFreeChart ist ein äusserst mächtiges Tool, dazu noch nach belieben veränderbar. Ich habe mich mal ca. ein halbes Jahr daran ausgetobt, das ist echt klasse.


----------



## hankenberge (7. September 2004)

*JFreechart: Memory Usage Demo verwenden*



> _Original geschrieben von Snape _
> *JFreeChart ist ein äusserst mächtiges Tool, dazu noch nach belieben veränderbar. Ich habe mich mal ca. ein halbes Jahr daran ausgetobt, das ist echt klasse. *



Hey Snape,

kurze Frage. Hast du das Memory Usage Demo vei jefreechart verwendet? es ist genau das was ich suche, aber leider find eich keine Infos darüber wie es erstellt worden ist.
oder hat jemand eine idee,wie ich den Speicher und die prozesserauslastung dynamisch in einem Diagramm darstellen kann?

Danke


----------



## Snape (7. September 2004)

*Re: JFreechart: Memory Usage Demo verwenden*

_Original geschrieben von hankenberge _
>Hey Snape,
>kurze Frage. Hast du das Memory Usage Demo vei jefreechart verwendet?

Nein, waren ausschliesslich StackedVerticalBar.

>es ist genau das was ich suche, aber leider find eich keine Infos darüber wie es erstellt worden ist.

Ist das nicht im Quellcode ersichtlich?

>oder hat jemand eine idee,wie ich den Speicher und die prozesserauslastung dynamisch in einem Diagramm darstellen kann?
>Danke

Hast Du schon mal im JFreeChart-Forum geschaut/gefragt?


----------



## hankenberge (7. September 2004)

*da antwortet keiner*

Ich habe mich da auch umgesehen, da haben mehere zu diesem Thema angefragt, aber keiner konnte wohl antworten. leider gibt es zu dem Chart keinen Quellcode, da es als beispiel nur auf der HP zu sehen ist, aber nicht in der demo.jar auftaucht.

naja hätte ja sein können.

Danke


----------



## hankenberge (9. September 2004)

*habe den code gefunden*

Ich habe den Code für das MemoryUsage  gefunden.


```
* ======================================
	* JFreeChart : a free Java chart library
	* ======================================
	*
	* Project Info: <http://www.object-refinery.com/jfreechart/index.html>
	* Project Lead: David Gilbert (david.gilbert@object-refinery.com);
	*
	* (C) Copyright 2000-2003, by Object Refinery Limited and Contributors.
	*
	* This library is free software; you can redistribute it and/or modify it under the terms
	* of the GNU Lesser General Public License as published by the Free Software Foundation;
	* either version 2.1 of the License, or (at your option) any later version.
	*
	* This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
	* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
	* See the GNU Lesser General Public License for more details.
	*
	* You should have received a copy of the GNU Lesser General Public License along with this
	* library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
	* Boston, MA 02111-1307, USA.
	*
	* ----------------
	* MemoryUsage.java
	* ----------------
	* (C) Copyright 2002, 2003, by Object Refinery Limited and Contributors.
	*
	* Original Author: Tony Bianchini;
	* Contributor(s): David Gilbert;
	*
	* $Id: MemoryUsage.java,v 1.4 2002/10/16 14:17:55 mungady Exp $
	*
	* Changes
	* -------
	* 10-Sep-2002 : Version 1, based on code by Tony Bianchini (DG);
	* 11-Oct-2002 : Fixed errors reported by Checkstyle (DG);
	* 16-Oct-2002 : Removed redundant attributes (DG);
	* 18-Oct-2002 : Moved to com.jrefinery.chart.demo.premium package (DG);
	* 25-Apr-2003 : Updated for JFreeChart 0.9.8, and moved to com.jrefinery.chart.demo package (DG);
	*
	*/

	import java.awt.BasicStroke;
	import java.awt.BorderLayout;
	import java.awt.Color;
	import java.awt.event.ActionEvent;
	import java.awt.event.ActionListener;
	import java.awt.event.WindowAdapter;
	import java.awt.event.WindowEvent;

	import javax.swing.JFrame;
	import javax.swing.JPanel;
	import javax.swing.Timer;

	import org.jfree.chart.ChartPanel;
	import org.jfree.chart.JFreeChart;
	import org.jfree.chart.axis.DateAxis;
	import org.jfree.chart.axis.NumberAxis;
	import org.jfree.chart.plot.XYPlot;
	import org.jfree.chart.renderer.DefaultXYItemRenderer;
	import org.jfree.chart.renderer.XYItemRenderer;
	import org.jfree.data.time.Millisecond;
	import org.jfree.data.time.TimeSeries;
	import org.jfree.data.time.TimeSeriesCollection;

	/**
	* A demo application showing a dynamically updated chart that displays the current JVM memory
	* usage.
	*
	* @author Tony Bianchini
	* @author David Gilbert
	*/
	public class MemoryUsage extends JPanel {

	/** Time series for total memory used. */
	private TimeSeries total;

	/** Time series for free memory. */
	private TimeSeries free;

	/**
	* Creates a new application.
	*/
	public MemoryUsage() {

	super(new BorderLayout());

//	 create two series that automatically discard data more than 30 seconds old...
	this.total = new TimeSeries("Total", Millisecond.class);
	this.total.setHistoryCount(30000);
	this.free = new TimeSeries("Free", Millisecond.class);
	this.free.setHistoryCount(30000);
	TimeSeriesCollection dataset = new TimeSeriesCollection();
	dataset.addSeries(total);
	dataset.addSeries(free);

	DateAxis domain = new DateAxis("Time");
	NumberAxis range = new NumberAxis("Memory");

	XYItemRenderer renderer = new DefaultXYItemRenderer();
	renderer.setSeriesPaint(0, Color.red);
	renderer.setSeriesPaint(1, Color.green);
	renderer.setBaseStroke(
	new BasicStroke(2f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL)
	);
	XYPlot xyplot = new XYPlot(dataset, domain, range, renderer);
	xyplot.setBackgroundPaint(Color.black);

	domain.setAutoRange(true);
	domain.setLowerMargin(0.0);
	domain.setUpperMargin(0.0);
	domain.setTickLabelsVisible(true);

	range.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

	JFreeChart chart = new JFreeChart(
	"Memory Usage", 
	JFreeChart.DEFAULT_TITLE_FONT,
	xyplot, 
	true
	);
	ChartPanel chartPanel = new ChartPanel(chart);
	add(chartPanel);

	}

	/**
	* Adds an observation to the 'total memory' time series.
	*
	* @param y the total memory used.
	*/
	private void addTotalObservation(double y) {
	total.add(new Millisecond(), y);
	}

	/**
	* Adds an observation to the 'free memory' time series.
	*
	* @param y the free memory.
	*/
	private void addFreeObservation(double y) {
	free.add(new Millisecond(), y);
	}

	/**
	* The data generator.
	*/
	class DataGenerator extends Timer implements ActionListener {

	/**
	* Constructor.
	*/
	DataGenerator() {
	super(100, null);
	addActionListener(this);
	}

	/**
	* Adds a new free/total memory reading to the dataset.
	*
	* @param event the action event.
	*/
	public void actionPerformed(ActionEvent event) {
	long f = Runtime.getRuntime().freeMemory();
	long t = Runtime.getRuntime().totalMemory();
	addTotalObservation(t);
	addFreeObservation(f);
	}

	}

	/**
	* Entry point for the sample application.
	*
	* @param args ignored.
	*/
	public static void main(String[] args) {

	JFrame frame = new JFrame("Memory Usage Demo");
	MemoryUsage panel = new MemoryUsage();
	frame.getContentPane().add(panel, BorderLayout.CENTER);
	frame.setBounds(200, 120, 600, 280);
	frame.setVisible(true);
	panel.new DataGenerator().start();

	frame.addWindowListener(new WindowAdapter() {
	public void windowClosing(WindowEvent e) {
	System.exit(0);
	}
	});
	}

	}
```

habe nur das Problem das ich folgende Fehlermeldung erhalte:



> The type org.free.util.PublicClonable sannot be resolved. It is indirectly referencent by required .class file



das passiert an der stelle : 





> DateAxis domain = new DateAxis("Time");



weiss jemand was das bedeuten soll?

danke


----------



## hankenberge (10. September 2004)

*antwort*

habe von jfree die antowrt erhalten.
als jemand es mal verwenden möchte
viel spass



> PublicCloneable is in the JCommon class library, so make sure you have the jcommon jar file on your classpath.
> 
> Regards,
> 
> ...


----------



## Snape (10. September 2004)

*Re: antwort*



> _Original geschrieben von hankenberge _
> *habe von jfree die antowrt erhalten.
> als jemand es mal verwenden möchte
> viel spass *



Dachte ich mir doch. Dave Gilbert ist sehr hilfsbereit.
Prima, dass es nun funktioniert.


----------

