WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

2D-Grafik

 

BenutzerK
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 23.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2016, 12:20     Titel: 2D-Grafik
  Antworten mit Zitat      
Hallo miteinander, Hallo Alex

Ich hätte hier dasselbe Problem. Ich habe auf einer anderen Seite http://matheplanet.com/default3.htm.....iewtopic.php?topic=137241 einen Beispiecode gefunden.

Code:

n = 200;
a = rand(n,3);
size(a)
mi1 = min(a(:,1));
ma1 = max(a(:,1));
mi2 = min(a(:,2));
ma2 = max(a(:,2));
mi3 = min(a(:,3));
ma3 = max(a(:,3));
for i = 1:n
   h = plot3(a(i,1),a(i,2),a(i,3),'o');
   alpha = (a(i,1)-mi1)/ma1;
   beta  = (a(i,2)-mi2)/ma2;
   gamma = (a(i,3)-mi3)/ma3;
   set(h,'Color',alpha*[1 0 0]+beta*[0 1 0]+gamma*[0 0 1]);
   % [0 0 0] schwarz; [1 1 1] weiß
   hold on
end
grid on
 


Das Problem ist jedoch, dass ich dies in 2D brauche und eine Legende mit den jeweiligen Werten aus der dritten Spalte meiner Matrix sollte ebenfalls vorhanden sein. Bei dem Code blicke ich aber auch nicht zu 100% durch.

Falls da jemand weiterhelfen könnte wäre ich sehr dankbar (muss sich nicht unbedingt auf den Beispielcode beziehen, neue Ansätze wären auch schön).

Mit freundlichen Grüßen
Daniel
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 11.02.2016, 14:48     Titel:
  Antworten mit Zitat      
Hallo BenutzerK,

Bitte hänge keine neue Frage an einen bestehenden Thread an. Danke!

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 11.02.2016, 17:36     Titel: Re: 2D-Grafik
  Antworten mit Zitat      
Hallo BenutzerK,

Was verstehst Du am Code genau nicht? Konkrete Fragen lassen sich viel einfacher beantworten.
Wenn man plot statt plot3 nimmt, sollte ein 2D-Diagramm machbar sein.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
BenutzerK
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 23.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2016, 19:07     Titel:
  Antworten mit Zitat      
Dass ich mit der normalen plot Funktion einen 2D Plot erstelle, ist mir klar. Mir geht nur nicht ein, wie ich meine dritte Größe da mit einbeziehen kann.
Ich will gewisse Werte über der Zeit plotten, das ist ja gar kein Problem. Nun will ich aber die Punkte je nach Größe der Werte (die in einem zusätzlichen dritten Vektor stehen, die ich aber nicht im Diagramm darstellen will) einfärben.

Auf mein Problem bezogen, wäre der Skalierungsfaktor alpha eine "Funktion" der Zeit und der Skalierungsfaktor beta hängt dann von den Werten, die ich darstelle ab.
Jedoch soll die Farbe nur durch Werte aus einem dritten Vektor beeinflusst werden. Streiche ich die Faktoren alpha und beta weg, so werden meine Punkte von hellgrün bis dunkelgrün eingefärbt (was ja auch logisch ist, weil die zusätzliche Info fehlt) und die Legende, die die Farbe und die Werte anzeigen soll, schreibt einfach "Datenpunkt 1, Datenpunkt 2" usw raus.
Hier stehe ich gerade etwas auf der Leitung.
Private Nachricht senden Benutzer-Profile anzeigen
 
BenutzerK
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 23.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.02.2016, 08:30     Titel:
  Antworten mit Zitat      
Für alle, die ein ähnliches Problem haben.
Es ist nicht perfekt, aber als Zwischenlösung ganz ok.

Code:

Vekt3_max = max(Vekt3);
Vekt3_min = min(Vekt3);
Vekt3_norm = zeros(length(time),1);
k = 1;
while k <= length(time)
   
    Vekt3_norm(k) = (Vekt3(k) - Vekt3_min) / (Vekt3_max - Vekt3_min);
   
    figure(1)
    if Vekt3_norm(k) >= 0.5
        p = plot(time(k), Vekt2(k), 'o');
        set(p, 'Color', 'r')
    else
        p = plot(time(k), Vekt2(k), 'o');
        set(p, 'Color', 'b')
    end
   
    hold on
    grid on
    k = k + 1;
   
end
 


Mein "Vekt2" ist derjenige, den ich auf der y-Achse darstelle und "Vekt3" ist mein dritter Vektor, nach dem gefärbt werden soll.

Ich normiere meinen dritten Vektor, sodass ich nur Werte zwischen null und eins bekomme. Wenn die Werte größer als ein definierter Wert sind, färbt er sie demnach rot oder blau ein.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.02.2016, 10:06     Titel:
  Antworten mit Zitat      
Hallo,

wenn die Daten mal Tausende Punkte enthalten, wird hier für jeden Punkt eine eigene Linie angelegt. Das ist keine gute Idee und kann mit logischer Indizierung vermieden werden:
Code:
Vekt3_norm = (Vekt3 - Vekt3_min) / (Vekt3_max - Vekt3_min);
red = Vekt3_norm >= 0.5;
plot(time(red), Vekt2(red), 'ro');
hold on
plot(time(~red), Vekt2(~red), 'bo');
hold off


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
BenutzerK
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 23.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.02.2016, 10:28     Titel:
  Antworten mit Zitat      
Hallo,

meine Vektoren haben tatsächlich mehr als 100,000 Einträge. Ich bin gerade so in meinem while-Schleifen-Denken, dass ich auf die Einfachheit von Matlab gerne vergesse.

Auf die Art kann ich auch meine Legende perfekt einfügen.

Danke
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.