INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Plotlegende dynamisch anlegen



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

31.01.2007, 14:48
Beitrag #1

a-sl Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 51
Registriert seit: Nov 2006

8.2
2005
kA

71034
Deutschland
Plotlegende dynamisch anlegen
Hallo zusammen,

ich habe mir ein VI geschrieben, in dem ich die Plotlegende dynamisch anlegen kann.

Das ganze läuft wie folgt ab:

Aus einem zuvor abgearbeiteten subVI erhält dieses VI ein boolsches Array (array_all) mit insgesamt 29 "true" oder "false" Werten, je nachdem, welcher kanal gemessen werden soll.

Danach wird mit Hilfe des boolschen Array ermittelt, wie die Plotlegende heissen soll (also der Plotname). ebenfalls wird eine Zufallsfarbe pro Plot gewählt.

Die Ausgänge des VI sind für dieses Problem unwichtig.

Mein problem:

Das Anlegen der Plotlegende funktioniert nur richtig, wenn der erste Case "...7, Default" mindestens einmal aufgerufen wurde. Wird dieser Fall nicht behandelt, wird zwar trotzdem eine Plotlegende mit dem richtigen namen und einer Farbe angelegt, jedoch haben die Plots im Chart eien andere Farbe als in der Legende angezeigt. Beispielsweise zeigt die Legende an, dass ein Plot rot ist, im Chart ist er aber blau.


Meiner Meinung nach hat es nichts damit zu tun, dass noch keine Messdaten vorliegen, wenn die Plotlegende angelegt wird (Thema active plot), denn es funktioniert ja, wenn der erste Case behandelt wird. Ich lasse mich da aber gern eines besseren belehren.

Es wäre toll, wenn jemand wüsste wo das Problem ist.

Gruss André


   
Sonstige .vi  070131_plotlegende_alle_SubVI_.vi (Größe: 55,4 KB / Downloads: 258)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
31.01.2007, 14:50
Beitrag #2

a-sl Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 51
Registriert seit: Nov 2006

8.2
2005
kA

71034
Deutschland
Plotlegende dynamisch anlegen
Vielleicht noch ein kleiner Hinweis:

die anderen cases sehen genau so aus wie der im Bild gezeigte Case, nur der Plotname ist ein anderer.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
31.01.2007, 15:37
Beitrag #3

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
Plotlegende dynamisch anlegen
Hi,

wie kann es sein, dass der Case "..7, Default" nicht aufgerufen wird? Du startest doch immer bei "0", egal wieviele Elemente aus "array_all" kommen (Ausnahme: keine Elemente in "array_all"). Hast du schon mal im Highlight-Modus (Glühbirne!) geschaut, was passiert?

Ich hab leider nur Lv 8.0.1...kann dein VI darum nicht öffnen. Evtl. kannst du's mal runterkonvertieren (File >> Save for previous version), dann kann ich auch mal schauen...

Kleiner Tipp: Verlager doch das Zusammenbauen deines String-Array in ein SubVI, oder noch besser, mach drei kleinere String-Array-Konstanten [0.1.2.3.4.5.6.7] + [0.1.2.3.4.5.6.7] + [2.3.4.5.6.7.8.9.10] und bau diese mit "Build Array" zusammen. So sparst du Platz und es wird viel übersichtlicher!

Die Flat Sequence brauchst du auch nicht, die Reihefolge ergibt sich automatisch durch die Referenz an den Knoten!


Noch ein Tipp: Definiere doch immer die gleichen Farben (1-Rot, 2-Blau,...), dass wär für den Benutzer einfacher auf dem Graph. Du kannst ja ein Farbarray mit z.B. 150 Farben an der Schleife anschließen (wenn dir diese Anzahl reicht). Bei mehr als 50 Kurven kann man aber eh nichts mehr erkennen...


Gruss
Achim

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
31.01.2007, 15:47
Beitrag #4

a-sl Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 51
Registriert seit: Nov 2006

8.2
2005
kA

71034
Deutschland
Plotlegende dynamisch anlegen

Sonstige .vi  070131_plotlegende_alle_SubVI_.vi (Größe: 55,72 KB / Downloads: 243)



Hallo Achim,

danke für deine Hilfe, ich habe Das VI nochmal für 8.0 gespeichert (frühere Version ging nicht).


Der case "...7, Default" wird beispeilsweise dann nicht aufgerufen, wenn im booleschen array die ersten 8 Werte false sind, also 0.

Um ein wenig den hintergrund aufzudecken:

Ich habe hier ein PXI.System mit 3 Messkarten und ich erfasse Temperaturen mit Thermoelementen, die ich alle in einem Chart visualisieren möchte. Und dazu gehört nunmal, dass die Plotlegende eigene Namen und frben hat.


du hast Recht, die Sequence kann weg.

Wie funktioniert das mit dem Farbarray??


Viele Grüße André
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
31.01.2007, 15:55
Beitrag #5

a-sl Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 51
Registriert seit: Nov 2006

8.2
2005
kA

71034
Deutschland
Plotlegende dynamisch anlegen
Mir ist gerade etwas aufgefallen:

1. Die case-struktur in den hochgeladenen Programmen muss bis 30 gehen, und nicht bis 29.


2. Bei Programmstart werden zwar neue Farben für die Plotlegende angelegt, der plot hat aber noch die alte farbe, die angelegt wurde, als das Programm zuvor ausgeführt wurde.


Zum Programmbeginn setze ich den graphen per invoke node auf default.

Gruss André
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
31.01.2007, 16:52 (Dieser Beitrag wurde zuletzt bearbeitet: 31.01.2007 17:00 von Achim.)
Beitrag #6

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
Plotlegende dynamisch anlegen
Hi,

dein Fehler rührt vermutlich daher, dass du zwar nur ausgewählte Plots einfärbst, aber wohl noch irgendwelche alten Informationen im Graph sind. Evtl. zeichnest/wählst du mehr Plots, als du haben willst. Wenn im angehängten VI der Fall "Fehler" eingestellt ist (im BD), hab ich das von dir beschriebene Verhalten!

Ich hab das mal nachvollzogen, siehe das angehängte VI. Da sollte jetzt alles funktionieren.

Probiers mal...


Sonstige .vi  070131_plotlegende_alle_SubVI_NEU.vi (Größe: 59,62 KB / Downloads: 253)


Gruss
Achim

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
01.02.2007, 10:31
Beitrag #7

a-sl Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 51
Registriert seit: Nov 2006

8.2
2005
kA

71034
Deutschland
Plotlegende dynamisch anlegen
   


Hallo Achim,

danke für Deine Hilfe.

Wenn ich alles korrekt verstanden habe, dann gibst du dem Plot, den ich angezeigt haben möchte, 20 zufällig generierte Werte, und zwar BEVOR sie eingefärbt werden (Fall "Kein Fehler").

Aber im Fall "Fehler" machst du doch dasselbe, oder nicht??


Ich habe mal ein Bild anbei, vielleicht mache ich ja etwas bei der Zuweisung zum Chart falsch...



Gruss André
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.02.2007, 10:40
Beitrag #8

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
Plotlegende dynamisch anlegen
Hi,

im Fall "Fehler" werden soviele Kurven mit je 20 Werten erzeugt, wie Elemente im "array_all" sind, egal ob die Werte "T" oder "F" sind! Alle Kurven werden dann auf dem Graph gezeichnet! Die Plotlegende wird jedoch nur für die "T"-Kurven erstellt.

Bei "Kein Fehler" werden nur die Kurven ausgewählt und gezeichnet, bei denen die Elemente in "array_all" auf "T" stehen! Und die Plotlegende wird auch nur für diese erstellt!

A.

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.02.2007, 11:00
Beitrag #9

a-sl Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 51
Registriert seit: Nov 2006

8.2
2005
kA

71034
Deutschland
Plotlegende dynamisch anlegen
   


hi Achim,

Dein Vi funktioniert wenn ich es allein ausführe. Wenn ich es als Subvi in meinem hauptprogramm ausführe, funktioniert es nur, wenn im array_all mindestens 1 der ersten 8 Kanäle true war.


Im ángehangenen Bild siehst du wie es sich auswirkt. Siehe Plotlegendenfarbe und Plotfarbe.

Beende ich das VI und starte es neu und wähle wieder dieselben kanäle, so ist die Farbe wieder die gleiche (hier grün).

Ich prüfe nun mal, ob das array_all korrekt zusammengesetzt wird.

Gruss André
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.02.2007, 12:03
Beitrag #10

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
Plotlegende dynamisch anlegen
Hi,

mein VI ist auch nicht als SubVI gedacht, es soll dir nur zeigen, dass du vermutlich zu viele Kurven zeichnest. Nämlich soviele, wie Elemente in "array_all" sind...auch wenn diese False sind! Du darfst aber nur die zeichnen, die du auch in der Legende sehen willst...nämlich die, die in "array_all" True sind! Also...mein VI ist nur ein Beispiel!

A.

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  XY Graph Plotlegende simcum 2 4.084 11.03.2021 20:47
Letzter Beitrag: simcum
  Leere Felder in Plotlegende Zimmer 2 4.183 08.04.2019 08:20
Letzter Beitrag: Zimmer
  Plots in Plotlegende deaktivieren J_uri 11 16.052 31.01.2018 11:59
Letzter Beitrag: erzengelsamael
  Plotlegende in den Griff bekommen mez15 4 5.307 09.03.2017 13:37
Letzter Beitrag: mez15
  Plotlegende Laufzeit-Kontextmenü anpassen. Hubert R. 7 7.528 10.10.2013 14:17
Letzter Beitrag: Hubert R.
  Plotlegende zur Seite aufziehen B033el 5 6.804 03.05.2013 10:45
Letzter Beitrag: jg

Gehe zu: