Ein Histogramm ist ein Säulendiagramm zur Darstellung von (meist stetigen) Häufigkeitsverteilungen. Der nachfolgende Tipp zeigt, wie ein solches Diagramm erstellt werden kann. Dazu sind folgende Arbeitsschritte notwendig:
Der Code: ' Aus einer Textdatei ("eingabe.txt") werden unsortierte ' (Mess-)werte eingelesen. Die Werte werden in eine zu ' wählende Anzahl von Klassen einsortiert. ' Dann erfolgt eine Darstellung der Klassenhäufigkeiten ' in einem Histogramm. Die Darstellung des Histogramms wird ' vom MSChart uebernommen. Gleichzeitig erfolgt eine Ausgabe ' der absoluten Klassenhäufigkeiten in eine Textdatei ' ("ausgabe.txt"). ' ' Benötigt werden: ' 1 Form ' 1 CommandButton ' 1 TextBox (für die Vorgabe der Klassenanzahl) ' 1 MSChart ' 1 ListBox ' 1 CheckBox (relative oder absolute Häufigkeit) Private Sub Command1_Click() Dim wert() As Double Dim KlassenGrenze() As Double Dim KlassenWichte() As Double Dim AnzKlassen As Integer Dim AnzWerte As Long Dim delta As Double Dim s As String Dim min As Double, max As Double Dim i As Integer, j As Integer, Filenumber As Integer ' ----------------------------- ' Werte aus Datei einlesen ' ----------------------------- Filenumber = FreeFile AnzWerte = 0 Open "eingabe.txt" For Input As #Filenumber Do While Not EOF(Filenumber) ' Zähler erhöhen AnzWerte = AnzWerte + 1 ReDim Preserve wert(1 To AnzWerte) Line Input #1, s wert(AnzWerte) = CDbl(s) ' kleinster und größer Wert If AnzWerte = 1 Then min = wert(1) max = wert(1) Else If wert(AnzWerte) < min Then min = wert(AnzWerte) If wert(AnzWerte) > max Then max = wert(AnzWerte) End If ' Ausgabe der Werte in eine Listbox (optional) List1.AddItem (wert(AnzWerte)) Loop Close #Filenumber ' ----------------------------- ' Histogramm "bauen" ' ----------------------------- ' wieviele Klassen? AnzKlassen = CInt(Text1.Text) ReDim KlassenGrenze(1 To AnzKlassen) ReDim KlassenWichte(1 To AnzKlassen) ' Breite eines Histogrammbalkens delta = (max - min) / AnzKlassen ' Festlegung der Grenzen For i = 1 To AnzKlassen KlassenGrenze(i) = i * delta + min Next i ' Klassifizierung ' die Werte in die entsprechenden Klassen einsortieren For i = 1 To AnzWerte For j = 1 To AnzKlassen If wert(i) <= KlassenGrenze(j) Then KlassenWichte(j) = KlassenWichte(j) + 1 Exit For End If Next j Next i ' relative oder absolute Häufigkeit? If Check1.Value = 1 Then ' --> relative For i = 1 To AnzKlassen KlassenWichte(i) = KlassenWichte(i) / AnzWerte Next i End If ' ----------------------------- ' Ausgabe ' ----------------------------- ' in Datei Filenumber = FreeFile Open "ausgabe.txt" For Output As #Filenumber For i = 1 To AnzKlassen s = Format(KlassenGrenze(i), "#0.00000") Print #Filenumber, s, KlassenWichte(i) Next i Close #Filenumber ' im MSChart MSChart1.chartType = VtChChartType2dStep MSChart1.ColumnCount = 1 MSChart1.RowCount = AnzKlassen For i = 1 To AnzKlassen MSChart1.Column = 1 MSChart1.Row = i MSChart1.Data = KlassenWichte(i) ' Beschriftung der X-Achse MSChart1.RowLabel = KlassenGrenze(i) Next i End Sub Dieser Tipp wurde bereits 22.741 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
Neu! sevDTA 3.0 Pro SEPA mit Kontonummernprüfung Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. Tipp des Monats März 2024 Dieter Otter UTF-8 Konvertierung von Dateien und Strings VB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |