jfreechart, kursdiagramm erstellen

Status
Nicht offen für weitere Antworten.

schlumsch

Aktives Mitglied
Hallo allerseits,

ich möchte mit Java ein Diagramm erstellen, das ganze soll dann
so aussehen wenn es fertig ist: www.schlumsch.eu/e2e/plot.jpg
Bislang verwende ich JFreeChart zum zeichnen. Kann mir jemand sagen, ob ich mit
JFreeChart ein derartiges Diagramm basteln kann und was das für ein Diagrammtyp ist.
evtl. gibt es ja auch eine andere Möglichkeit ein derartigers Diagramm zu erstellen, auch
hier wäre ich für Tips Links code (*g*) dankbar.

Thx & lg[/img]
 

Ebenius

Top Contributor
Ich bin mir nicht sicher, ob man das genauer abgrenzen muss. Aber wenn es keines ist, dann ähnelt es zumindest einem Gantt-Diagramm...
 

schlumsch

Aktives Mitglied
Aber so wie es aussieht, fangen die einzelnen "Bars" in diesem Diagramm immer erst dort an, wo die vorhergehende Bar aufhört. Sprich ist es möglich, dass meinetwegen Bar 1 zwischen den Werten 10 und 20 liegt, die Bar 2 zwischen 5 und 30?
 

schlumsch

Aktives Mitglied
Ja coole Sache, hab es eben auch selbst probiert und es geht super. Nun stellen sich noch ein paar weitere Fragen:

1. Kann ich die Bars selber beschriften? Sprich in (über) eine Bar einen Wert/String einfügen?
2. (wie) Kann ich die Achsenbeschriftungen formatieren? Hier sind manchmal nur die zeiten angegeben, selbst wenn die einzelnen Bars sich über 2 Tage hinweg ziehen.
 
G

Gast

Gast
zu 1. Man kann dem Renderer einen eigenen LabelGenerator zuweisen. Habe ich aber bisher nur für BarCharts gemacht. Es müsste allerdings auch bei Gantt-Diagrammen gehen.
Ein Beispiel, wie es bei BarCharts geht gibts auch auf java2s.

zu 2. Das passiert normalerweise nur, wenn das Chart-Panel zu klein ist. Lösung hab ich aber keine.
 

schlumsch

Aktives Mitglied
Hmmm, wenn ud 1. schon mit Barcharts gemacht hast, dann würdest du mir einen riesigen Gefallen tun, indem du mir mal ein Beispielcode-Schnipsel zeigst. Neben dem Gantchart habe ich nämlich auch mit BCharts zu tun und dort eben die gleiche Aufgabe...

thx & lg
 
G

Guest

Gast
Naja, du erweiterst halt den StandardCategoryItemLabelGenerator mit dem was du brauchst.
Einfaches Beispiel:

Code:
public class CustomItemLabelGenerator extends StandardCategoryItemLabelGenerator {

    @Override
    public String generateLabel(CategoryDataset dataset, int row, int column) {
        return dataset.getRowKey(row).toString();
    }
}

Hier wird jetzt einfach der RowKey, also was normalerweise in der Legende wäre zurückgegeben.

Dann wird der CustomItemLabelGenerator irgendwo bei der Chart-Generierung gesetzt:

Code:
//...
CategoryPlot plot = chart.getCategoryPlot();
CategoryItemRenderer render = plot.getRenderer();
render.setBaseItemLabelGenerator(new CustomItemLabelGenerator());
render.setBaseItemLabelsVisible(true);
//...

und fertig.
 

schlumsch

Aktives Mitglied
Krass, das funktioniert wunderbar und ich danke dir. Nun habe ich noch 2 weitere Fragen *g*

1.) Kann ich die Position, an welcher der Wert ausgegeben wird, ebenfalls verändern? Aus Platzgründen würde eine Ausgabe direkt über die einzelne Bar sehr praktisch sein.

2) Eine sicher kniffligere Frage zum Gantt. Hier bin ich nun an dem Punkt, wo alles wunderbar geht und mir nur noch die y-Achse oberhalb der Diagrammfläche fehlt. Wie man an dem Bildchen sieht (siehe erstes Posting) sollen dort 2 Zeitscalen erscheinen, welche die relevante Zeitspanne einmal in GETn und einmal in CMT anzeigen. Irgend eine Ahnung, wie man das umsetzt?

thx im Voraus & lg
 

MarcB

Bekanntes Mitglied
Hallo, hab mich mal hier angemeldet.

zu 1.
Code:
//ItemLabel Position
renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.CENTER));
//Schriftgrößen
renderer.setBaseItemLabelFont(new Font("Verdana", Font.PLAIN, 10));

Deine 2. Frage kann ich dir leider auch nicht beantworten. Hab, wie oben erwähnt erst vor einer Woche angefangen mit den Gantt-Charts zu experimentieren und das auch nicht weiter getrieben als es für das Projekt nötig war.
 

schlumsch

Aktives Mitglied
Hehe,
ja dank dir. Wie sieht es aus du kannst mir doch sicher auch sagen, wie ich die Farbe der Balken selbst ändere. Irgendwie finde ich diese Ecke nicht.
Ansonsten, solltest du mal wieder mit den Gantts arbeiten müssen und auf ein ähnliches Problem stoßen, wie ich in 2., dann denk mal an mich :)
 
G

Guest

Gast
Code:
renderer.setSeriesPaint(0, Color.black);

Das eben für jede Series.
 

schlumsch

Aktives Mitglied
Danke. Noch eine wichtige Frage. Ich speichere bislang das Bild physisch auf HD und gebe es dann als Image aus. Gibt es auch eine Möglichkeit, das Bild auszugeben ohne dieses auf Platte zu speichern?
 

MarcB

Bekanntes Mitglied
Ja. Wie mans macht kommt auf die Anwendung an.
Wenns ne Webanwendung ist, google mal nach Cewolf. In Swing erstellt man dafür ein ChartPanel, das man dann einfach da einfügt wo mans haben will.

Code:
ChartPanel chartPanel = new ChartPanel(chart);

Das leitet von JPanel ab. Kommt allerdings nicht mit jedem LayoutManager klar.
 

MarcB

Bekanntes Mitglied
Grundsätzlich funktioniert alles was mit JSP funktioniert auch mit JSF.

Ansonsten hab ich im Java Magazin zu dem Thema mal das da gesehen.
Habs aber noch nicht ausprobiert.
 

schlumsch

Aktives Mitglied
Auf Jenia bin ich auch schon gestoßen. Wenn ich mir dort ( http://www.jenia.org/jsp/chart.jsf ) allerdings die versionshinweise anschaue, dann unterstützen die nur 2 Charttypen: PieChart2D und BarChart2D. Ich brauche den barchart und Ganttchart. Bei cewolf blicke ich nicht durch, wie man das mit jsf implementiert.
 

schlumsch

Aktives Mitglied
...und noch einmal eine Frage an die Runde. Kann (und wenn ja wie) ich in einem Barplot auch doubles anzeigen, sprich werte mit 2 Nachkommastellen?

thx & lg
 

MarcB

Bekanntes Mitglied
Habe leider nicht viel Zeit, deshalb nur ne Antwort auf die letzte Frage.
Double hat nicht nur 2 Nachkommastellen, aber ich nehme an du willst z.B. eine Währung anzeigen. Falls ich damit richtig liege könnte der folgende Code hilfreich sein:
Code:
DecimalFormat labelFormatter = new DecimalFormat("##,###.00€");
        labelFormatter.setNegativePrefix("(");
        labelFormatter.setNegativeSuffix(")");
        chart.getCategoryPlot().getRenderer().setItemLabelGenerator(
            new StandardCategoryItemLabelGenerator("{2}", labelFormatter)
        );
        chart.getCategoryPlot().getRenderer().setItemLabelsVisible(true);

Ist frei aus einem älteren Projekt kopiert (also nicht meckern wenns so nicht mehr geht).

Die geschweifte Klammer im Konstruktor gibt die Achse an (hier also die Y-Achse).
 

schlumsch

Aktives Mitglied
...und da bin ich wieder :)
2 Fragen hab ich da noch:

1.) Kann man eigentlich in einem Barplot die Breite der einzelnen Bars festlegen,
ohne die Maße des gesammten Diagrammes anzufassen?

2.) Man kann für ein ganzes Diahgramm einen Tooltip - also ein Infofenster bei mouseover festlegen. Kann man dies auch für einzelne Bars tun, derart das z.B die beschriftung der y-Achse der jeweilichen Bar ausgegeben wird, wenn der benutzer über die einzelne Bar mit der Maus fährt? Die Erweiterung wäre dann, ein onklick zu erfassen, wenn der Nutzer auf eine Bar klickt... Hat da jemand Ahnung???

Danke euch, lg schlumsch
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F JFreeChart und scrollen Spiele- und Multimedia-Programmierung 12
S jfreechart: Barplot, auf ein neues :) Spiele- und Multimedia-Programmierung 16
H Pokemonklon erstellen Spiele- und Multimedia-Programmierung 7
M Mühle Spielfeld erstellen Spiele- und Multimedia-Programmierung 5
J TreeNode erstellen [Hilfe beim Konstruktor, Zeile 16] Spiele- und Multimedia-Programmierung 2
V GUI in LWJGL 2 erstellen Spiele- und Multimedia-Programmierung 6
J CMD Output aktualisieren lassen statt neu erstellen? Spiele- und Multimedia-Programmierung 1
A Spielfelder erstellen mit Jogl Java durch ein Koordinaten Array Spiele- und Multimedia-Programmierung 1
A Figur zentrieren und Spielwelt erstellen Spiele- und Multimedia-Programmierung 1
R Durch String Platform Game erstellen Spiele- und Multimedia-Programmierung 8
B Mit Swing eine Grafische Oberfläche erstellen Spiele- und Multimedia-Programmierung 1
L Zeichentrick erstellen Spiele- und Multimedia-Programmierung 6
S GUI erstellen für Text Adventure Spiele- und Multimedia-Programmierung 4
ZoXlike Audio Server selbst erstellen Spiele- und Multimedia-Programmierung 11
K Erstellen eines Fotoalbums mit Java Spiele- und Multimedia-Programmierung 8
F Klausurersatz: Ein Java-Programm erstellen und dieses präsentieren. Spiele- und Multimedia-Programmierung 2
K Umlaufbahn erstellen Spiele- und Multimedia-Programmierung 3
Anfänger2011 Wichtig: Grafik und Sprites erstellen Spiele- und Multimedia-Programmierung 1
D Ordner auf Desktop erstellen(Pc unabhängig) Spiele- und Multimedia-Programmierung 3
J Zufällige Zeichenfolge erstellen mit Möglichkeit der Subtraktion Spiele- und Multimedia-Programmierung 20
X LWJGL - Anklick baren Button erstellen aber wie? Spiele- und Multimedia-Programmierung 6
X Minecraft Wie kann ich eine Karte erstellen wie zb:(Bei Minecraft) Spiele- und Multimedia-Programmierung 1
A Spielemap erstellen Spiele- und Multimedia-Programmierung 13
S Einen Dialog zweier Personen erstellen (Textadventure) Spiele- und Multimedia-Programmierung 4
G Textadventure erstellen Spiele- und Multimedia-Programmierung 9
M Beste methode zur Map Erstellen in "Block" Games Spiele- und Multimedia-Programmierung 2
F LWJGL Problem mit Erstellen eines Objekts und der Kamera Spiele- und Multimedia-Programmierung 5
windl Mediacenter Skin erstellen Spiele- und Multimedia-Programmierung 3
M OpenGL: Rectangle dort erstellen wo ich hintippe Spiele- und Multimedia-Programmierung 2
T LWJGL Gui erstellen Spiele- und Multimedia-Programmierung 7
N Level abspeichern/erstellen Spiele- und Multimedia-Programmierung 7
C Würfel erstellen und als Raum nutzen Spiele- und Multimedia-Programmierung 6
S Wolken Bild/Grafik vom Programm erstellen lassen Spiele- und Multimedia-Programmierung 11
N Eigene Java 3D Engine erstellen. Spiele- und Multimedia-Programmierung 11
P Spiel HUD erstellen Spiele- und Multimedia-Programmierung 6
D ImageIcon erstellen Spiele- und Multimedia-Programmierung 2
S Applikation aus Applet erstellen Spiele- und Multimedia-Programmierung 6
M Spielkapitel/-Level erstellen/verwalten Spiele- und Multimedia-Programmierung 6
T mit Sketchup und Java [Spiel erstellen] Spiele- und Multimedia-Programmierung 4
S Spielfeld erstellen Spiele- und Multimedia-Programmierung 2
X Kartenspiel: Karten erstellen Spiele- und Multimedia-Programmierung 4
W Quiz mit Videos erstellen Spiele- und Multimedia-Programmierung 4
T Animiertes GIF erstellen Spiele- und Multimedia-Programmierung 2
E Sammelspiel erstellen? Spiele- und Multimedia-Programmierung 2
W Bitmap aus Datei erstellen Spiele- und Multimedia-Programmierung 5
H Screenshot einer Graphics2D Anwendung erstellen Spiele- und Multimedia-Programmierung 6
Quaxli isometrische Sprites erstellen Spiele- und Multimedia-Programmierung 2
R Shapes erstellen Spiele- und Multimedia-Programmierung 8
D Jogl2 (Netbeans8) selbstlaufende Applikation erstellen Spiele- und Multimedia-Programmierung 4
S Grafik erstellen für Java Spiel Spiele- und Multimedia-Programmierung 8
M *.jar erstellen Spiele- und Multimedia-Programmierung 12
V Java3D: HUD erstellen Spiele- und Multimedia-Programmierung 2
V Java3D: Ringe für Saturn erstellen Spiele- und Multimedia-Programmierung 8
S Video erstellen (AVI) Spiele- und Multimedia-Programmierung 3
T Erstellen eines ausdruckbaren Formulars Spiele- und Multimedia-Programmierung 5
A Screenshots von einer Scene erstellen Spiele- und Multimedia-Programmierung 5
O Image dynamisch erstellen. Spiele- und Multimedia-Programmierung 6
G GL4Java Animation erstellen Spiele- und Multimedia-Programmierung 2
C JPEG oder BMP Bild erstellen Spiele- und Multimedia-Programmierung 5
S 3d editor gesucht der 3ds files erstellen kann. Spiele- und Multimedia-Programmierung 4
F Image eines bestimmten Bereichs eines JPanels erstellen Spiele- und Multimedia-Programmierung 4
T [jogl] GLU ab JSR-231 erstellen Spiele- und Multimedia-Programmierung 2
S Gif Animation aus Prog heraus erstellen Spiele- und Multimedia-Programmierung 11
S 3D Objekt erstellen und darstellen Spiele- und Multimedia-Programmierung 4
R JPEG aus HexString erstellen Spiele- und Multimedia-Programmierung 2
D mehrere Graphiken erstellen und ihre Position definieren Spiele- und Multimedia-Programmierung 4

Ähnliche Java Themen


Oben