Diagramm erstellen

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von vb-checker.

    Diagramm erstellen

    Guten Tag,

    ich würde gerne ein Diagramm erstellen und hab dazu die Zeit und entweder true oder False(True;True;T rue;False;False;False;False;False;False;False;False;False;11-02-2011;15:52:10)
    Nun stellt sich bei mir die Frage ob es überhaupt möglich ist aus solchen Werten ein Diagramm zu erstellen und wie das geht.
    Danke schonmal im vorraus ;)

    Gruß Max

    Edit by Manschula: Bitte auf das richtige Unterforum achten. Zur Orientierung ist unter jedem Forum eine kurze Beschreibung --> Thema aus 'Tipps & Tricks und Tutorials' verschoben

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Manschula“ ()

    FreakJNS schrieb:

    klar ist das möglich, hast du jetzt nur True ODER Fals pro Zeitpunkt oder mehrere True-False-Kombinationen pro Zeitpunkt?
    ich habe 12 Eingänge die alle 2 sekunden Protokolliert werden, deshalb auch 12 boolesche Werte und dann die Zeit. Aus jedem dieser einzelnen Signale würde ich gerne in Abhängigkeit von der Zeit ein Diagramm erstellen.
    Also pro Signal entweder True oder False.
    Hab ich deine Frage beantwortet ? :huh:



    Eistee schrieb:

    Also ein Diagramm für nur 2 Werte ist etwas unpassend.
    Egal welche Form, es würd irgendwie komisch aussehen ^^
    Hab ich mir auch schon gedacht dass nur die 2 verschiedenen Werte etwas komisch aussehen würde, deshalb hab ich überlegt dass man alle true's zählt und alle false's zählt und in Prozent von den gesamtsignalen angibt, und ann mit diesem wert einen True-Balken und einen False-Balken erstellt.
    Leider bin ich noch nicht drauf gekommen wie man so etwas macht :(
    naja, wenn man das ganze schön zeichnet (mit GDI+) sieht es recht cool aus. Hab mal in Paint was zusammengeklickt:
    img825.imageshack.us/img825/6137/neubitmapx.png

    Japp, die frage ist beantwortet^^
    mit GDI kannst du ein solches diagramm relativ leicht basteln. am besten ein eigenes control, ist leicht da das updateinterval regelmäßig ist und der abstand zwischen den messungen daher konstant. sieh dir mal die diagramme im taskmanager an. soetwas könntest du ganz einfach zeichnen..

    alternativ könntest du auch farben benutzen. jedes sinal ist ein fortlaufender strich der rot für 0 und grün für 1 weitergezeichnet wird.. wäre übersichtlicher als das zickzack hinundher^^
    aaaaahhh
    habs ausversehen als erledigt markiert, das ist es aber noch gar nicht !!!

    hab einen Timer-Intervall von 2000, dass mir alle meine 12 Signale protokolliert, kannst dir ja denken was da für ne Datenmenge auf einen Zukommt wenn dasTeil mal 8 Stunden läuft, denke auch dass es schwer wird dann auf so einem Diagramm noch irgendwas zu erkennen
    okay... das würde aber jedes diagramm sprengen^^

    du kannst die werte abspeichern und nur einen begrenzt großen ausschnitt vom ganzen anzeigen lassen. man muss also nach rechts und links scrollen - genau umgekehrt wie mit einer listbox.
    oder du musst die datenaufnahme optimieren. wenn sich die werte alle 2 sekunden auch wirklich verändern ist das schlecht. ansonsten nur einen speicherpunkt hinterlegen wenn sich die daten verändert haben..

    erzähl doch mal was du genau vorhast
    Signale erfassen, auswerten und in in einem Diagramm anzeigen ( z.B. Maschinenlaufzeit bzw. Standzeit)
    Wenn ich nur die veränderung abspeicher, wirds ziehmlich blöd mit meiner Zeitachse :-/
    Und es ist wichtig das man sehen kann was an einem einzelnen Tag war, evtl was in einer woche war
    mh, es ist deine entscheidung wie du es löst. Fakt ist, dass dein Bildschirm nur eine gewisse datenmenge anzeigen kann und eine noch kleinere "schön"...
    du wirst also um das scrollen nicht vorbeikommen. Später nur die Werte "von-bis" anzeigen zu lassen ist einfach. alles aufeinmal bei so einer datenmenge unmöglich^^
    Mach doch einfach ein Säulendiagramm. Wenn es ganz viele Werte werden ist eine Säule halt nur noch 1Pixel breit. Dann passen im Optimalfall so viele Werte drauf, wie deine Bildschirmauflösung breit ist. Wenn es noch mehr sind, zeichnest du das Bild einfach so groß, damit alles draufpasst, und skalierst dann runter

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    Dann würde so eine Aufteilung Sinn machen:

    Unten sieht man ja diesen blauen Balken. Den kann man als ganz normalen Scrollbalken für den Bildlauf nach links und rechts nutzen. Allerdings sind links und rechts am Balken auch kleine Kästchen. Wenn man an diesen zieht, verändert man den sichtbaren Ausschnitt. Wenn man sich den Balken also so groß, wie das Fenster zieht, sieht man das ganze DIagramm. Durch verkleinern des Balkens hat man ganz weit ins DIagramm reingezoomt, und somit natürlich auch viel zum scrollen

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    wenn du keine relativ guten programmierkenntnisse hast wird es verdammt schwer...

    - GDI+ Kenntnisse
    - wissen über klassen und events
    - wissen wie man ein eigenes control erstellt (eigenes control ist besser, da sich der zum anzeigen relevante code nicht mit anderem vermischt)
    Was möchtest du denn genau wissen? Erstelle erstmal ein neues Usercontrol. Dann eine Prozedur, mit der du eine List(of T) hinzufügen kannst. (So würde ich die Daten jetzt spontan übergeben). Dein T muss dann ein Datentyp sein, der das Datum und den Wert, also True/False, speichert.
    Dann brauchst du noch eine Prozedur a la setBoundaries, die als Paramter zwei Daten akzeptiert, nämlich Start- und Endzeitpunkt, des darzustellenden Graphen.
    Dann gehts in Paint-Event des Usercontrols. Hier prüfst du erstmal, ob du Daten verfügbar hast, wenn ja, prüfst du noch, ob die Boundaries gesetzt wurden. Dann kann das zeichnen losgehen. Über GDI+ findest du genügend Anleitungen

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !