Chart mit mehreren Graphen - Frage zum sinnvollen Vorgehen

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Chart mit mehreren Graphen - Frage zum sinnvollen Vorgehen

    Wie würdet ihr vorgehen, wenn eine Chart mit mehreren Graphen ausgegeben werden soll, die aus unterschiedlichen Quellen stammt und die einen unterschiedliche Anzahl von Datenpunkten hat?

    Ich habe ein Programm geschrieben, welches mir aus vorgegebenen Parametern einen Graphen berechnet. Da die Eingabe der Parameter über NumericUpDown-Boxen erfolgt, kann einen Aktualisierung auch sehr oft notwendig kein, weil auch das Mausrad zur Änderung verwendet werden kann (was ich sehr elegant finde und nützlich zum besseren Verständnis der Zusammenhänge). Nun soll noch eine Memory-Funktion hinzugefügt werden, so dass je nach Belieben vier Kurven gespeichert werden können.
    Das würde ich mir noch zutrauen, da ich es über ein Array mit der entsprechenden Anzahl von Dimensionen und eine Table lösen würde, die per "Me.Chart1.DataBind()" angebunden wird. (Mit einem Table als Quelle)
    Nun wurde aber noch der Wunsch an mich herangetreten, dass man auch Messwerte einblenden können soll (in einem der Memory-Graphen). Nur ist dann die Anzahl der Datenpunkte und somit die x-Werte anders als bei den anderen von mir berechneten Graphen.
    Welche sinnvolle Lösung würdet ihr mir vorschlagen?

    Ist es aus Gründen der Performance notwendig, dass beim Ändern der Parameter nur ein Graph verändert wird und der Rest im Chart unverändert bleibt? (geht das überhaupt?) Oder spielt es keine Rolle, wenn immer per Databind() alles zusammen übergeben/aktualisiert wird? Was ist aus Gründen der Performance in diesem Bereich ein NoGo? Normalerweise werden die vier Memory-Graphen nur selten verändert und nur der Hauptgraph ändert sich. Muss ich mir überhaupt Gedanken über die Performance machen?
    Jeder berechnete Graph besteht aus rund 60 Datenpunkten. Wenn Messwerte in einen der Memory-Graphen eingelesen werden soll, können es auch mal 400 Punkte sein.
    Jede Rechnung des Haupt-Graphen besteht aus 60 Datenpunkten und jeder Datenpunkt benötigt rund 20 Multiplikationen, 6 Divisionen und einem Logarithmus und noch etwas Subtraktion.
    Sollte sich keine einfache Lösung finden lassen (die ich auch umsetzen kann) müsste ich die Messwerte auf die vorgegebenen x-Werte meiner berechneten Kurve umrechnen. (was ich sehr schade finden würde)

    Ist es möglich einen Chart aus mehreren Quellen zu versorgen. Also je Graph eine einzelne unabhängige Quelle?
    Wie würdet ihr strategisch vorgehen?

    Ein Bild vom bisherigen Programm habe ich angehängt.
    Bilder
    • Hardcopy_Le.png

      38,98 kB, 1.215×706, 157 mal angesehen
    Das ist natürlich eine Datenverarbeitung, da solltest du datenverarbeitungs-mäßig vorgehen:
    Datenverarbeitungs-Vorraussetzungen
    Die Anzeige im Chart ist nur ein View (von mehreren), es ist wichtig, dass du den Kopf frei bekommst vom Stieren auf das Chart.
    Wie man ein Chart an typisierte DataTables bindet ist hier gezeigt: Chart - Sample - und da hats auch noch weiterführende Links.
    Ich interpretiere deine Antwort so (und auch das, was du mir in anderen Threads geschrieben hast), dass ich mich von meinem Programm erst einmal frei machen soll und mich nur mit der Datenverarbeitung beschäftigen sollte - quasi als Langzeit-Investition.

    Muss ich mir überhaupt Gedanken wegen irgendwelcher Geschwindigkeits-Probleme machen oder ist meine Anwendung für vb.net und Windows eine Kleinigkeit?
    Vom Chart sollteste dich befreien, und dich drum kümmern, deine Daten zB in einem typisierten Dataset zu pflegen.
    Das bedient all das, was nu offensichtlich auch von anderer Seite an dich herangetragen wird:
    Daten auch tabellarisch präsentieren, editieren, und auch abspeichern und laden.
    Und wenn du deine Daten dementsprechend hälst, dass du ein DGV dran anbinden kannst, dann kannst du ebensogut auch ein Chart dran anbinden, und das ist genau, was das von mir verlinkte Beispiel zeigt.

    Ich weiß nicht, was du an Performance brauchst, also wenn du ein animiertes Chart haben willst, etwa einen fortlaufenden Schreiber - das geht mit WinForms nicht flüssig.
    Wenns als Schreiber alle 500ms ein Bild reicht, das kann WinForms noch.

    Aber dass du einen Schreiber willst, hast du noch nicht gesagt.
    Es soll auch kein Schreiber werden. Es soll nur der eine der Graphen aktualisiert werden, wenn über die Eingabe oder das Mausrad ein Parameter geändert wird. Das ist alles.
    Die meiste Zeit starrt man sowieso die Grafik nur an und denkt nach... ;)

    Ich werde mir deine Links genauer ansehen. In den letzten Jahren wurde mir immer eingetrichtert alles mit Array zu machen, da dies am schnellsten geht. Es ist nicht leicht sich davon frei zu machen.
    Wenn ich dein Beispiel unter Chart - Sample ausprobiere, erhalte ich zwei Warnmeldung (s. Anhang)

    [EDIT] falsche Link-Adresse korrigiert.
    Bilder
    • Warnmeldung02.png

      62,37 kB, 1.508×805, 128 mal angesehen
    • Warnmeldung01.png

      51,19 kB, 1.179×748, 130 mal angesehen

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

    ja, ich hab den Upload neu gemacht.
    Ich weiß auch nicht, warums da ein GeneralImport auf DatasetExtensions drinne war, und v.a. auch einer auf den Deppen-Namespace Microsoft.VisualBasic.
    Also wäre das 4. Häkchen zu entfernen, und noch ausserhalb des sichtbaren Bereiches auch noch eins.

    Die Warnung bedeutet, dass der Namespace DatasetExtensions gar nix enthält, was man importieren könnte. Tut nicht weh, ausser vlt. im Kopf, weil doch recht sinnlos. ;)
    @ErfinderDesRades
    Ich möchte nur zurückmelden, dass die Progammoberfläche beim Visual Stuudio2013 Community etwas anders ist, als bei deinen Videos unter "die vier Views auf Video". So ist z.B. oben im PullDown-Menü nicht der Punkt "Daten" vorhanden.
    Ein Bild (von einer eigenen Spielerei) habe ich angehängt um den Unterschied zu zeigen.
    Der ganze Datenverarbeitungskram ist doch für mich als Anfänger noch sehr verwirrend. Bin gespannt, ob ich es etwas reduzieren kann um nicht den Boden unter den Füßen zu verlieren.

    Ich möchte dich um deinen Rat bitten. Sollte ich mich zuerst durch alle dieser Videos durcharbeiten und alles nachprogarmmieren (als Übung) oder kann ich für den ersten Durchlauf es vielleicht auf einzelne Videos und Problemstellungen reduzieren. Meine Anwendungen kennst du. Meine Hoffnung ist, dass wenn ich das erste mal am Ziel angekommen bin ein zweiter Durchlauf mir leichter fällt, da dann nicht mehr alles neu für mich ist. Momentan habe ich noch zu viel Unbekannte im System ;) Mir reicht es schon, dass meine Programmoberfläche etwas anders aussieht als in deinen Videos.

    [Edit] Bild hinzugefügt
    Bilder
    • VisualStudio2013.png

      68,51 kB, 1.281×1.080, 118 mal angesehen
    • VisualStudio2013_02a.png

      125,04 kB, 579×500, 142 mal angesehen

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „egon“ ()

    Ja, das finden die toll bei Microsoft, alle 2 Jahre das Menü-System und die Bedienung auf den Kopf zu stellen.
    Ich bin da bisserl unlustig, jedesmal zig neue Videos zu klabastern.
    Also das DatenFenster haben sie jetzt unter "View-OtherWindows" versteckt ("Ansicht - WeitereFenster").

    Wie du den Stoff optimal verarbeitest weiß ich auch nicht.
    Auf jeden Fall zunächstmal die Downloads downen, und damit rumspielen: verändern, kaputt machen, reparieren, verbessern.
    Vlt. auch was nachbauen - dabei stösst man bestimmt auch auf jede Menge Details, die man im Video garnet so schnell mitbekommt.
    Das gilt fürs 4-Views-Tut.

    Wenn du das auf deine Messungen überträgst, dann musst du zuerst mit dem Datenmodell anfangen (ganz wie im Tut).
    Und dazu musst du relationale Datenmodellierung überhaupt richtig verstehen, also da empfehle ich, im Forum nachzufragen, weil bestenfalls 10% kriegen das gleich hin - so einigermassen, und so gut wie niemand kriegt das gleich anfangs wirklich sauber hin.

    Vlt kann man da nach Interessen-Lage vorgehen: Der eine findet das Thema vlt. spannend, und zieht sich mit Begeisterung ein Vid nach dem anderen rein, und kann so viel auch aufnehmen.
    Der andere will sein Projekt weitermachen, und guckt nur so viel, bis was kommt, was ihm nützlich erscheint, und bastelts gleich ein.
    Dabei stellter bestimmt fest, dass noch was fehlt, aber man weiß ja, wo nachgucken.

    Aber ich glaub, alles zumindest flüchtig anzugucken ist doch am besten, auch wenn mans garnet aufnehmen kann.
    Dann weiß man zumindest, dasses da und da für ganz fabelhafte Techniken gibt (etwa zum Layout), und das verringert die Gefahr, sich wochenlang damit zu verkünsteln, das Rad neu zu erfinden.
    (Daher übrigens mein Nick - weil mir das mehr als einmal passiert ist)