g.drawLine arbeitet sehr ungenau.

Status
Nicht offen für weitere Antworten.

gurke1509

Mitglied
Hallo.
Ich habe folgenden Code entworfen:

Code:
/*
 * Diese Klasse sorgt für das Erstellen eines Frames, in welchem ein Graph angezeigt werden kann.
 */

package bernoulli;

import java.awt.*;
import javax.swing.*;

/**
 *
 * @author gurke
 */
public class Graph extends JFrame
{
    Zeichenpanel zeichenpanel;
    Graphics g;

    
    /** Erzeugt das Fenster mit einem bemalbaren Panel */
    public Graph(String titel, int[] xwerte, int[] ywerte)
    {
        super(titel);                                           //Fenster erzeugen
        setSize(new Dimension(500,500));
        Container content = getContentPane();
        content.setLayout(new BorderLayout(0,0));
        zeichenpanel = new Zeichenpanel();
        content.add(zeichenpanel, BorderLayout.CENTER);
        setVisible(true);
        zeichenpanel.setValues(xwerte, ywerte);
        zeichenpanel.repaint();
    }
    
}


class Zeichenpanel extends JPanel
{
    int[] xwerte;
    int[] ywerte;
    
    public Zeichenpanel()
    {
        super();
        setBackground(Color.WHITE);
    }
    
    protected void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        for(int i=0; i < xwerte.length-1; i++)
        {
            g.drawLine(xwerte[i]*6,ywerte[i]*6+20,xwerte[i+1]*6,ywerte[i+1]*6+20);
        }
    }
    
    public void setValues(int[] x, int[] y)
    {
        this.xwerte = x;
        this.ywerte = y;
    }
}

Zum Code:
In den Arrays xwerte und ywerte stehen mehrer zahlen, die einen graphen ergeben sollen.
also sowas wie
Code:
xwerte ywerte
   10         40
   20         80
   30          50

aber wenn das ganze gezeichnet wird, sieht es sehr ungenau aus.
mit 100 einträgen sieht das ganze aus, wie
Java.jpg
das aus.
Eigentlich ist es eine Binomialverteilung. So sieht es aber nicht aus.

Weiß einer warum das so ungenau arbeitet?
Gruß Tobias[/list]
 
S

SlaterB

Gast
was genau verstehst du nun unter 'ungenau'?
das sieht doch recht deutlich nach Stufen von 6 Pixeln aus
und du hast in deinem Code ja angegeben, dass jeder Wert mit 6 mulitpliziert wird,

also wird aus 0,1,2 -> 0,6,12, daher 6 Pixel Unterschied zwischen 2 Werten

-----------

sinnvoll wäre übrigens noch die Angabe der x und y-Arrays zum selber testen:

int[] x = new int[]{10,20,30, ..};
 

gurke1509

Mitglied
ungenau ist daran, dass da stufen zu sehen sind.
Bei 100 Einträgen in den Arrays müssten folgende Werte die Kurve ergeben:
Code:
32	0.0112%	0.0204%	100%	
33	0.0232%	0.0436%	99.979%	
34	0.0458%	0.0894%	99.956%	
35	0.0863%	0.1758%	99.910%	
36	0.1559%	0.3318%	99.824%	
37	0.2697%	0.6016%	99.668%	
38	0.4472%	1.0489%	99.398%	
39	0.7110%	1.7600%	98.951%	
40	1.0843%	2.8443%	98.239%	
41	1.5869%	4.4313%	97.155%	
42	2.2292%	6.6605%	95.568%	
43	3.0068%	9.6673%	93.339%	
44	3.8952%	13.562%	90.332%	
45	4.8474%	18.410%	86.437%	
46	5.7958%	24.205%	81.589%	
47	6.6590%	30.864%	75.794%	
48	7.3527%	38.217%	69.135%	
49	7.8028%	46.020%	61.782%	
50	7.9589%	53.979%	53.979%	
51	7.8028%	61.782%	46.020%	
52	7.3527%	69.135%	38.217%	
53	6.6590%	75.794%	30.864%	
54	5.7958%	81.589%	24.205%	
55	4.8474%	86.437%	18.410%	
56	3.8952%	90.332%	13.562%	
57	3.0068%	93.339%	9.6673%	
58	2.2292%	95.568%	6.6605%	
59	1.5869%	97.155%	4.4313%	
60	1.0843%	98.239%	2.8443%	
61	0.7110%	98.951%	1.7600%	
62	0.4472%	99.398%	1.0489%	
63	0.2697%	99.668%	0.6016%	
64	0.1559%	99.824%	0.3318%	
65	0.0863%	99.910%	0.1758%	
66	0.0458%	99.956%	0.0894%	
67	0.0232%	99.979%	0.0436%	
68	0.0112%	100%	0.0204%	
69	0.0052%	100%	0.0091%	
70	0.0023%	100%	0.0039%	
71	0.0009%	100%	0.0016%	
72	0.0003%	100%	0.0006%	
73	0.0001%	100%	0.0002%	
74	0.0000%	100%	0.0000%

dabei interessiert nur die zweite Spalte!

Das sind so viele Einträge... Da muss das doch eine schöne runde Kurve ergeben und nicht so ein paar Stufen.

Das ganze nehme ich nur *6, damit das ein bisschen mehr gezogen ist und man bei den kleinen Werten auch was erkennt.
 
S

SlaterB

Gast
was sollen diese komischen %-Werte?
du benutzt ein int[], da können nur ganze Zahlen drin sein,
0, 1, 2, oder vielleicht auch eine 3 ;)

mach dir doch analog zur Zeichnung eine Ausgabe,
dann siehst du was im Array drinsteht,

wie gesagt brauch man zum testen eine verwertbare Zahlendarstellung,

z.B. 0,0,1,4,6,3,

was man so copy&paste ausprobieren kann,
mit merkwürdigen %-Tabellen ist niemandem geholfen


edit: deine Darstellung sieht genau wie deine Werte aus, nur eben als int gerundet:
0,1,1,2,3,3,4,5,6,7,7,8...
 

gurke1509

Mitglied
jaja.. das ist mir schon klar :D .
Die oben erstellte Tabelle stammt aus einer anderen Funktion meines Programms. Dort werden für alle Werte von 0 bis 100 die Wahrscheinlichkeiten ausgerechnet und nur in der Tabelle stehen dann die %-Zeichen. In die Arrays werden seperat die gerundeten Werte geschrieben.

Au man.. klaar!!!
Das ist doch total klar, dass das ungenau ist, wenn ich gerundete Integer-Werte nehme.
Zwischen 7.3527, 7.8028, 7.9589, 7.8028 und 7.3527 existiert ja dann garkein Unterschied mehr :D.
Ich sollte das ganze vorher vielleicht mal mit 10 oder so multiplizieren. Dann wird das genauer.

Oh man.. Dass ich da nicht vorher drauf gekommen bin :D.

Danke für den Tipp :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Erste Schritte drawLine Methode der Graphics Klasse Java Basics - Anfänger-Themen 2
B drawLine in eine Schleife packen Java Basics - Anfänger-Themen 2
W drawLine(...) - Linie soll nur begrenzt lang sein Java Basics - Anfänger-Themen 9
B Drawline mit Borderlayout Java Basics - Anfänger-Themen 3
B Drawline wird auf JFrame nicht angezeigt Java Basics - Anfänger-Themen 3
F g.drawLine in g 2D casten Java Basics - Anfänger-Themen 5
F Simpler DrawLine - Befehl!? Java Basics - Anfänger-Themen 9
N DrawLine Java Basics - Anfänger-Themen 7
F g.drawLine Farbübergänge Java Basics - Anfänger-Themen 4
G drawLine + Linienstärke Java Basics - Anfänger-Themen 2
N NullPointerException in "g.drawLine(x, y, x, y);" Java Basics - Anfänger-Themen 6
Makaan_Neo Eigene DrawLine Methode mit Farbverlauf Java Basics - Anfänger-Themen 5
M AWT -eigene DrawLine Methode mit Farbverlauf in der Linie ? Java Basics - Anfänger-Themen 2
W Methode, die mit einem Datum arbeitet? Java Basics - Anfänger-Themen 22
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
D Ausgeben welcher Thread gerade Arbeitet Java Basics - Anfänger-Themen 8
A Frage zu einer Methode - Panel arbeitet nicht ordnungsgemäß Java Basics - Anfänger-Themen 2
F Erste Schritte JCreator arbeitet nicht mehr als Eingabeaufforderung. Warum? Java Basics - Anfänger-Themen 5
C Programm arbeitet nicht weiter Java Basics - Anfänger-Themen 2
M split arbeitet nicht richtig Java Basics - Anfänger-Themen 2
G Key Listener arbeitet Fehlerhaft Java Basics - Anfänger-Themen 6
K Jcreator arbeitet wieder aber trotzdem probleme mit de Java Basics - Anfänger-Themen 7
W Konstruktur arbeitet nicht richtig? Java Basics - Anfänger-Themen 3
M Wie arbeitet man mit Interfaces Java Basics - Anfänger-Themen 16
F setCursor arbeitet unerwartet Java Basics - Anfänger-Themen 2
S Wie arbeitet iter.next() Java Basics - Anfänger-Themen 3
M Das Betribssystem arbeitet aber es wird nix angezeigt ? Java Basics - Anfänger-Themen 12
H Wie arbeitet man mit Beans? Java Basics - Anfänger-Themen 8
D BigDecimal Ausgabe sehr lang. Java Basics - Anfänger-Themen 2
X Sehr schnelle agile Entwicklung Java Basics - Anfänger-Themen 1
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
C Verarbeitung von sehr großen Dateien Java Basics - Anfänger-Themen 52
P Erste Schritte Console - Sehr komische Ausgabe! Java Basics - Anfänger-Themen 3
B sehr lange Srings in File schreiben Java Basics - Anfänger-Themen 4
Z Sehr simpler Taschenrechner - Hilfe! Java Basics - Anfänger-Themen 10
M Suche Hilfe bei sehr kleinen Quelltexten Java Basics - Anfänger-Themen 2
M Welche externen Bibliotheken sind in Java sehr zu empfehlen? Java Basics - Anfänger-Themen 4
C Einlesen in Array von Textdatei sehr langsam Java Basics - Anfänger-Themen 7
M sehr großes Byte Array Java Basics - Anfänger-Themen 3
R OutOfmemory Exception bei sehr großer Liste (Tomcat Webservice) Java Basics - Anfänger-Themen 4
H Sehr einfache Java-Programme Java Basics - Anfänger-Themen 24
Luk10 OOP Sehr allgemeine Schnittstelle Java Basics - Anfänger-Themen 19
S Input/Output Sehr langen String in Datei schreiben Java Basics - Anfänger-Themen 8
R ArrayList sehr viel schneller als Array? Java Basics - Anfänger-Themen 2
R Sehr einfache möglichkeit ArrayList oder Array zu initialisieren? Java Basics - Anfänger-Themen 8
R Sehr kleine doubles nicht in Exponentialdarstellung ausgeben Java Basics - Anfänger-Themen 3
B ABspeichern eines sehr grossen negativen Werts Java Basics - Anfänger-Themen 6
Beckenbauer Eine anstehende (sehr simple) Applikation in UML darstellen (Klassendiagramm) Java Basics - Anfänger-Themen 20
N Name zu sehr ähnlich??? Java Basics - Anfänger-Themen 12
E Reguläre Ausdrücke mit sehr variablen Eigenschaften Java Basics - Anfänger-Themen 2
T Generic vom Generic: Zu sehr verschachtelt? Java Basics - Anfänger-Themen 6
Antoras Datei laden mit BufferedReader sehr langsam Java Basics - Anfänger-Themen 7
F Programm sehr langsam. Windows 7? Java Basics - Anfänger-Themen 23
S Eclipse .metadata ordner ist sehr gross! Java Basics - Anfänger-Themen 1
G Socket erstellen dauert sehr lange. Java Basics - Anfänger-Themen 4
D Sehr großer String lässt sich nicht bearbeiten Java Basics - Anfänger-Themen 7
G Verzeichnis auslesen mit sehr sehr vielen Bildern Java Basics - Anfänger-Themen 6
E Methode sehr langsam und funktioniert teilweise nicht Java Basics - Anfänger-Themen 3
S JFileChooser öffnet Unterverzeichnisse sehr langsam Java Basics - Anfänger-Themen 2
G Sehr eigenartige Datumsprobleme. Java Basics - Anfänger-Themen 2
I Schulprojekt !sehr wichtig! Java Basics - Anfänger-Themen 6
M sehr weit verschachtelte XML-datei mit jdom auslesen Java Basics - Anfänger-Themen 4
G sehr kleine Dezimalzahlen (BigDecimal) falsch angezeigt Java Basics - Anfänger-Themen 5
T Erste Schritte (SEHR mühsam); Grafiktest Java Basics - Anfänger-Themen 5
F Java Applikation ProjectX startet sehr langsam Java Basics - Anfänger-Themen 3
C FileInputStream sehr langsam Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben