JFreeChart nach erneutem aufruf fehlt 2. Achse

Status
Nicht offen für weitere Antworten.
M

MrWhy

Gast
Hallo


Ich habe wieder einmal ein Problem...

Ich habe mir eine Klasse geschrieben die einen Chart zeichnet mit JFreeChart wenn ich nun die daten auswähle dann kommt alles so raus wie es soll... nur wenn ich das Programm nicht schließe und gleich einen neuen Datensatz auswähle zeichnet er nicht mehr die 2 Achse sonder macht nur einen Strich... hier mal ein wenig code dazu
Code:
public class Chart extends JFrame {

    public Chart(final String btitle, String data1title, double[] dx, double[] d1y, String data2title,double[] d2y) 
    {
        
        super(btitle);
        final XYDataset dataset1 = createDataset1(dx, d2y, data1title);
        final NumberAxis axis2 = new NumberAxis("Contrast");
        final String chartTitle = "Dual Axis Demo 2";
        final XYSeries s2 = new XYSeries("Contrast", false, true);
        final XYSeriesCollection dataset = new XYSeriesCollection();
        final JFreeChart chart = ChartFactory.createXYLineChart(
            btitle,                     // chart title
            "Voltage",                   // domain axis label
            "Current",                 // range axis label
            dataset1,                    // data
            PlotOrientation.VERTICAL,
            true,                       // include legend
            true,
            false);
        final XYPlot plot = chart.getXYPlot();
        chart.setBackgroundPaint(Color.white);

        /*Fügt dem Chartpanel die 2. Achse hinzu
         */
        axis2.setAutoRangeIncludesZero(true);
        plot.setRangeAxis(1, axis2);
        plot.setDataset(1, createDataset2(dx, d1y, data2title));
        plot.mapDatasetToRangeAxis(1, 1);
        final XYItemRenderer renderer = plot.getRenderer();
    
        if (renderer instanceof StandardXYItemRenderer) {
            final StandardXYItemRenderer rr = (StandardXYItemRenderer) renderer;
            //rr.setPlotShapes(true);
            rr.setShapesFilled(true);
            
            
        }
        
        final StandardXYItemRenderer renderer2 = new StandardXYItemRenderer();
        renderer2.setSeriesPaint(0, Color.black);
        //renderer2.setPlotShapes(true);
        //renderer.setToolTipGenerator(StandardXYToolTipGenerator.getTimeSeriesInstance());
        plot.setRenderer(1, renderer2);
 
        final ChartPanel chartPanel = new ChartPanel(chart);
        setContentPane(chartPanel);

    }
    /* Erstellt das Datenset 1
     *@param dx = XAchse (Voltage)
     *@param d2y = YAchse (Current)
     *@param data2title = Name des Datensets
     *@return dataset = Fertiges Datensets
     */
    private XYDataset createDataset1(double[] dx, double[] d1y, String data1title) 
    {
        final XYSeries s1 = new XYSeries(data1title, false, true);
        int l = dx.length;
        for (int i = 0; i <= l-1 ; i++) {
            double y = d1y[i]/2.25;
            s1.add(dx[i], y);
        }
        final XYSeriesCollection dataset = new XYSeriesCollection();
        dataset.addSeries(s1);
        return dataset;
        
    }
    /* Erstellt das Datenset 2
     *@param dx = XAchse (Voltage)
     *@param d2y = YAchse (Contrast)
     *@param data2title = Name des Datensets
     *@return dataset = Fertiges Datensets
     */
     private XYDataset createDataset2(double[] dx,double[] d2y, String data2title) 
    {
        final XYSeries s2 = new XYSeries(data2title, false, true);
        int l = dx.length;
        for (int i = 0; i <= l-1 ; i++) 
        {
            
            s2.add(dx[i], d2y[i]);
        }
        final XYSeriesCollection dataset = new XYSeriesCollection();
        dataset.addSeries(s2);
        return dataset;
    }   
     /* Instanziert den Chart
     *btitle = Titel des Charts
     *data1Title = Titel der Datenquelle 1
     *data2title = Titel der Datenquelle 2
     *dx = Daten der X Achse
     *d1y = Daten der Y Achse Current
     *d2y = Daten der Y Achse Contrast
     */
    public static void charts(String btitle, String data1title, double[] dx, double[] d1y, String data2title, double[] d2y) {
                final Chart demo = new Chart(btitle, data1title, dx, d1y, data2title, d2y);
        demo.setDefaultCloseOperation(demo.DISPOSE_ON_CLOSE);
                demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);
        try {
            demo.finalize();
        } catch (Throwable ex) {
            ex.printStackTrace();
        }


    
} 
}

Ich hoffe mir kann dabei jemand helfen...

Danke !!!

Gruß


MrWhy
 
S

SlaterB

Gast
> nur wenn ich das Programm nicht schließe und gleich einen neuen Datensatz auswähle zeichnet er nicht mehr die 2 Achse sonder macht nur einen Strich

vielleicht stimmt irgendwas mit den Daten nicht, eines der Arrays in zweiten Aufruf null oder enthält nur 0-Werte oder ähnlichen,
mache doch Ausgaben a la
"Datensatz 1/2: Werte 0 = .., ..."

--------

bei mir gehts (mit einer main, die du nicht geliefert hast...)

Code:
 public static void main(String[] args)
        throws Exception
    {
        double[] x = new double[]
            {1, 2, 3};
        double[] y1 = new double[]
            {9, 3, 6};
        double[] y2 = new double[]
            {7, 17, 17};
        charts("Test", "Test", x, y1, "Test3", y2);

        Thread.sleep(4000);
        double[] y3 = new double[]
            {10, 5, 0};
        charts("Test", "Test", x, y1, "Test3", y3);
    }
 
M

MrWhy

Gast
Danke für deine Antwort...

Code:
  try {
              final  Workbook workbook = Workbook.getWorkbook(new File(Pfad)); 
                Sheet sheet = workbook.getSheet("Daten");

                re = sheet.getColumn(1);
                sr = re.length;
                   final double[] d1x = new double[sr];
                    final double[] d1y = new double[sr];
                    final double[] d2y = new double[sr];

            
                    while ( i < sr )  {
                         a = re[i].getContents();

                         a = a.replace(',' , '.');
                        double doubName = Double.parseDouble(a);
                        System.out.print(doubName);
                        d1y[f] = doubName;
                        i++;
                        f++;
                                                System.out.println(i);
                        }
                    
                        re = sheet.getColumn(2);

                        i = 11;
                        f= 0;
                        
                        while ( i < sr )  {
                         a = re[i].getContents();

                         a = a.replace(',' , '.');
                        double doubName = Double.parseDouble(a);
                        System.out.print(doubName);
                        d1x[f] = doubName;
                        i++;
                        f++;
                        }
                        
                        re = sheet.getColumn(4);
                        i = 11;
                        f= 0;
                        
                        while ( i < sr )  {
                           a = re[i].getContents();

                         a = a.replace(',' , '.');
                        double doubName = Double.parseDouble(a);
                        System.out.print(doubName);
                        d2y[f] = doubName;
                        System.out.println(i);
                        i++;
                        f++;
                        }

      
                
                       
                 workbook.close();
                 
        final Chart d = new Chart("test", "test", d1x, d1y, "test", d2y);
        d.setDefaultCloseOperation(d.DISPOSE_ON_CLOSE);
        d.charts("test", "test", d1x, d1y, "test", d2y);
                 return;
                 
                 
            
            }
        catch (Exception e){
                   return ;
        }

So habe ich den chart gefüllt und geladen...

ich komm einfach nicht drauf woran es liegt

Danke !
 
S

SlaterB

Gast
höre und lerne für dein Leben: Workbook und Chart NIE zusammen testen

wenn du zu verschiedenen Zeitpunkten in deinem Programm was aus einem Workbook liest,
dann ist das ja durchaus nötig,
aber die einzig erlaubte Ausgabe (zum testen) ist dann System.out.println

wenn du zu verschiedenen Zeitpunkten in deinem Programm Chart erstellst,
dann ist das ja durchaus nötig,
aber die einzig erlaubte Eingabe (zum testen) ist dann eine Menge von Test-Arrays mit festen Werten


sofern diese beiden ersten Schritte verifiziert sind, muss man das ganze natürlich zusammenbringen, keine Frage,
aber nicht 10 Dinge auf einmal machen und sich dann wundern, dass alles zusammen schiefgeht

-----

na jedenfalls kann ich bis auf diesen wertvollen allgemeinen Tipp nix weiter sagen,
deinen Workbook-Kram kann ich ja nicht testen
(und werde mir auch nicht die Mühe machen wenn du das Excel mitschickst ;) )


-------

und noch mal wiederholt:
schreibe in deine Chart-Klasse eine Ausgabe:
"Werte-Array enthält: ... ";
 
M

MrWhy

Gast
Ja du hast ja recht...

hab ich auch erst getan nur bin ich erst beim zusammenführen auf den fehler gestoßen...

ich hab ihn nun auch schon gefunden... nur versteh ich nicht warum...

Aber das hat nichts mehr mit dem Chart zu tun also eröffne ich einen neuen Thread ich hoffe du kannst mir noch wieterhelfen...

Danke

MrWhy
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E JFreeChart (LineChart) akutalisiert nicht Java Basics - Anfänger-Themen 10
C JFreeChart Linie nicht korrekt dargestellt Java Basics - Anfänger-Themen 1
B Markieren einzelner Punkte in JFreeChart Java Basics - Anfänger-Themen 1
N JFreeChart --> TimeSeries auslesen Java Basics - Anfänger-Themen 9
N JFreeChart - Value und veriable Zeitachse Java Basics - Anfänger-Themen 15
J JFreeChart wird nicht angezeigt Java Basics - Anfänger-Themen 6
A JFreeChart als png abspeichern Java Basics - Anfänger-Themen 2
S Jfreechart mit LinkedList befüllen Java Basics - Anfänger-Themen 1
G JFreeChart | Plot updaten bei neuem Dataset | wahrscheinlich "Thread-abhängig" Java Basics - Anfänger-Themen 3
S JFreeChart - Speichermanagement Java Basics - Anfänger-Themen 6
M Problem JFreeChart Java Basics - Anfänger-Themen 8
M JFreeChart Java Basics - Anfänger-Themen 5
P JFreechart Java Basics - Anfänger-Themen 9
G JFreeChart und das Update(was nicht klappt). Java Basics - Anfänger-Themen 3
G jfreechart einbinden + tutorial Java Basics - Anfänger-Themen 2
G JFreeChart einbinden Java Basics - Anfänger-Themen 4
N JFreeChart Koordinatenachsen Java Basics - Anfänger-Themen 11
G Problem mit der Darstellung (JFreechart) Java Basics - Anfänger-Themen 3
M jfreechart - Balkendiagramm mit Werten anzeigen, geht das? Java Basics - Anfänger-Themen 2
S JFreeChart Java Basics - Anfänger-Themen 4
L JFreeChart Java Basics - Anfänger-Themen 3
L JFreeChart in Eclipse Java Basics - Anfänger-Themen 5
S JFreeChart Java Basics - Anfänger-Themen 7
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
S nach Import von jars (PLC4x) in Eclipse kann nicht mehr compiliert werden Java Basics - Anfänger-Themen 9
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
M Queue-Datenstruktur: nach dem Elementen entfernen, das Ergebnis ist immer noch nicht optimal. Java Basics - Anfänger-Themen 3
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
I Bild richtig speichern / Hochkant im File Explorer, nach Upload vertikal Java Basics - Anfänger-Themen 9
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
C Probleme mit Byte konvertieren nach int Java Basics - Anfänger-Themen 10
T sortierung der eingabe nach größe Java Basics - Anfänger-Themen 5
G Bei dynamischer Arrayliste nach jeder Auswahl Zahl entfernen Java Basics - Anfänger-Themen 3
ptcho Werte/Position nach dem Funktionsaufruf tauschen? Java Basics - Anfänger-Themen 1
K Warum wird mir hier nach dem ersten Durchlauf zwei mal "welchen Datentyp wollen sie übergeben?" ausgegeben ? Java Basics - Anfänger-Themen 1
H Cast von Float nach String klappt nicht Java Basics - Anfänger-Themen 12
W LocalDate toString und nach Split falsch "erkannt"? Java Basics - Anfänger-Themen 8
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
S Größte Zahl nach Eingabe der Zahl 0 ausgeben Java Basics - Anfänger-Themen 6
I Java Mail Timeout erst nach rund 5 Minuten? Java Basics - Anfänger-Themen 9
FireHorses Einen Command erst nach einer Chateingabe aktivieren Java Basics - Anfänger-Themen 1
izoards Sortier Algorithmus für Bounding Box Elememte Links nach Rechts und von Oben nach Unten Java Basics - Anfänger-Themen 33
Jambolo Karten sortieren nach Rang und Farbe Java Basics - Anfänger-Themen 5
Lion.King Subtraktion nach Eingabe im Terminal Java Basics - Anfänger-Themen 7
D Programmieren nach UML Java Basics - Anfänger-Themen 2
rosima26 Java nach letzter Ziffer sortieren Java Basics - Anfänger-Themen 19
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
H Erste Schritte Nach einer Zahl n soll n Mal der String untereinander ausgegeben werden Java Basics - Anfänger-Themen 3
volcanos List & ArrayList nach Familiennamen abfragen Java Basics - Anfänger-Themen 57
sserio Wie kann man nach einer Klasse fragen? Java Basics - Anfänger-Themen 12
S Java Client-je nach Heap Size Größe startet Applikation oder nicht Java Basics - Anfänger-Themen 4
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
F Suche nach betreuender Person für eine Jahresarbeit der 12. Klasse. Java Basics - Anfänger-Themen 6
F nach Methode Programm nicht beenden Java Basics - Anfänger-Themen 9
E Umlaute und Sonderzeichen werden nach der Build Project nicht richtig angezeigt Java Basics - Anfänger-Themen 2
M Bei nach oben scrollen soll Seite aktualisiert werden (Userscript mit Javascript) Java Basics - Anfänger-Themen 10
K log4j nach log4j2 überführen Java Basics - Anfänger-Themen 0
javapingu Jeglichen Inhalt einer Textdatei nach Zeile n löschen Java Basics - Anfänger-Themen 8
J Nach dem Exportieren funktioniert mein Programm nicht mehr Java Basics - Anfänger-Themen 8
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
B Array nach Wert prüfen rekursiv Java Basics - Anfänger-Themen 5
CptK For-Schleife in Thread nach jedem Durchlauf pausieren Java Basics - Anfänger-Themen 35
D Primzahlen Rechner nach Eratostenes von Kyrene Algorithmus Java Basics - Anfänger-Themen 2
rafi072001 Sortieren einer HashMap nach Values Java Basics - Anfänger-Themen 2
L Zahlungen nach Monat filtern Java Basics - Anfänger-Themen 2
J Jtable Eingabe nach Klick ausserhalb der Tabelle übernehmen Java Basics - Anfänger-Themen 6
I String nach Wort suchen Java Basics - Anfänger-Themen 6
C ArrayList sortieren nach bestimmten Buchstaben in den Wörtern Java Basics - Anfänger-Themen 13
javaluke Erste Schritte Array nach Datentyp sortieren Java Basics - Anfänger-Themen 16
D Methoden nach einer bestimmten Reihenfolge ausführen. Java Basics - Anfänger-Themen 20
idontknow707 Matrix nach z.B. Variable durchsuchen Java Basics - Anfänger-Themen 4
O 2D-Array nach einer Spalte sortieren Java Basics - Anfänger-Themen 22
I Liste gruppieren nach Monat? Java Basics - Anfänger-Themen 5
P Ein Objekt nach einem String durchsuchen? Java Basics - Anfänger-Themen 7
M Nach einer erstmaligen Eingabe, eine zweite Eingabe nur noch gegen bestätigung möglich Java Basics - Anfänger-Themen 2
D Input/Output fehlerhafter Algorithmus zum Ersetzen von Array-Werten nach logischem Schema Java Basics - Anfänger-Themen 1
C Meldung einer Klasse nach "oben" Java Basics - Anfänger-Themen 6
B Nach eingefügtem Code erkennt Compiler keine Instanzvar und meldet SyntaxError Java Basics - Anfänger-Themen 2
newcomerJava Nach doppelter Zahl eine Ausgabe Java Basics - Anfänger-Themen 10
M Anzahl Schleifendurchgänge nach x Sekunden anzeigen Java Basics - Anfänger-Themen 2
C Lotto 3, 4, 5, 6 Richtige nach x Ziehungen ermittelt.. Java Basics - Anfänger-Themen 7
G Primzahlen von Rekursiv nach Iterativ Java Basics - Anfänger-Themen 6
F JMenuItem Kann nicht nach einem String benannt werden... Java Basics - Anfänger-Themen 11
R JDK installieren Durcheinander nach installation von SE 14.02 Java Basics - Anfänger-Themen 6
P Sortieren von Listen nach Attributen Java Basics - Anfänger-Themen 3
B DateTimeFormatter nach LocalDateTime, wenn dd.MM.yyyy oder dd.MM.yyyy mm:hh Java Basics - Anfänger-Themen 5
1 main-Methode erweitern, Nachfrage nach wiedeholung Java Basics - Anfänger-Themen 2
G unklares Verhalten nach Instanzierung neuer Klasse Java Basics - Anfänger-Themen 3
S Wohin kommt das „abstract“? Vor oder nach „public“/ „private“ /... Java Basics - Anfänger-Themen 3
S Datenbank Befehl nach Login Java Basics - Anfänger-Themen 5
N Operatoren Schreibtischtest der Reihen-Suche nach Aufschluss in die Basics Java Basics - Anfänger-Themen 1
B Umstieg von C# nach Java Java Basics - Anfänger-Themen 18
Ellachen55 Wie nach häufigste Werte im Array suchen? Java Basics - Anfänger-Themen 2
M Untersuchen ob ein Graph nach entfernen einer Kante immer noch zusammenhängend ist Java Basics - Anfänger-Themen 70
N Wörter und Zahlen nach speziellen Wörtern ausgeben Java Basics - Anfänger-Themen 11
M Werte ändern sich nicht mehr nach Reset Java Basics - Anfänger-Themen 14
B Nach dem kompilieren werden Bilder nicht mehr gefunden Java Basics - Anfänger-Themen 10
X Nach einem Bruch testen ob es eine ganze Zahl ist Java Basics - Anfänger-Themen 6
B String nach erstem Leerzeichen trennen Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben