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

farblich plotten

 

weiter.von

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.04.2013, 01:01     Titel: farblich plotten
  Antworten mit Zitat      
Hallo,

ich habe versucht die Lösung von Nras mal an meine Bedürfnisse anzupassen, jedoch funktioniert es nicht so wie ich es möchte.

Zunächst einmal habe ich eine Zeitreihe (X-Achse ist die Zeitachse. Für jeden Zeitpunkt habe ich ein Wert (Y-Achse). Dabei möchte ich den Wert, der die Schwelle überschritten hat (beispielsweise grün darstellen) und die Werte, die unterhalb der unteren Schranke liegen sollen in rot angezeigt werden. restliche Werte sollen schwarz bleiben.

Die Achsen konnte ich bislang noch nicht anpassen? Was müsste ich an dem COde ändern?

Code:
werte = rand(1,10000)*360;
untereGrenze = 240;
obereGrenze = 290;
[werte,bins] = hist(werte,length(werte));
rote = find(bins <=untereGrenze); % in [lower_b, upper_b]
gruene = find(bins>=obereGrenze); % in [lower_b, upper_b]
schwarze = [find(bins<untereGrenze),find(bins>obereGrenze)]; % nicht in [lower_b, upper_b]
bar(bins(schwarze),werte(schwarze),'facecolor','black')
hold on
bar(bins(rote),werte(rote),'facecolor','red','edgecolor','red')
hold on
bar(bins(gruene),werte(gruene),'facecolor','green','edgecolor','green')


Unbenannt.png
 Beschreibung:

Download
 Dateiname:  Unbenannt.png
 Dateigröße:  9.73 KB
 Heruntergeladen:  529 mal


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 04.04.2013, 10:50     Titel: Re: farblich plotten
  Antworten mit Zitat      
Hallo weiter.von,

Schaue Dir mal den PATCH Befehl an. Man benötigt eine Koordinate mehr als Flächen, logischer Weise.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 04.04.2013, 11:57     Titel:
  Antworten mit Zitat      
Hallo,

falls du das mit dem Histogramm so machen möchtest, hier mal ein Code, der dir das so farblich darstellt.
Code:
werte = rand(1,10000)*360;
untereGrenze = 240;
obereGrenze = 290;
[werte,bins] = hist(werte,360); % mal 360 bins (statt 10000 bins)
rote = find(bins <=untereGrenze);
gruene = find(bins>=obereGrenze);
schwarze = find(bins>untereGrenze & bins<obereGrenze); % korrigiert
sum([length(rote),length(gruene),length(schwarze)]) % Kontrolle (360)

figure
bar(bins(schwarze),werte(schwarze),'facecolor','black')
hold on
bar(bins(rote),werte(rote),'facecolor','red','edgecolor','red')
hold on
bar(bins(gruene),werte(gruene),'facecolor','green','edgecolor','green')


Falls du aber die Zeitreihe einfach nur darstellen willst und die Farben ändern willst, ginge zum beispiel soetwas. Geht vielleicht besser und ist sieht nicht so richtig schön aus, aber vom Prinzip her kann das so gehen

Code:

% Zeitreihe fälschen
N = 5000;
u = zeros(1,N);
r = (rand(1,N)-0.5).*randn(1,N);
u(1) = 3; % irgendwo anfangen
for t = 1:N-1
    u(t+1) = u(t) + r(t); % Zeitreihe Wind
end
% negative Daten ausmerzen
u(u<0) = 0;

% Indizes einteilen
rote = find(u<5);
gruene = find(u>10);
schwarze = find(u>=5 & u<=10);

figure
plot(rote,u(rote),'r.')
hold on
plot(gruene,u(gruene),'g.')
plot(schwarze,u(schwarze),'k.')


Wenn du Linien plotten willst, könntest Du dir eventuell die Zeitpunkte ansehen, zu denen man eine der Grenzen passiert und dann für diese Teilstücke Linien in den passenden Farben plotten.
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.04.2013, 15:23     Titel:
  Antworten mit Zitat      
Danke läuft schon mal.

Jedoch arbeite ich mit subplots, und würde gerne eine plot funktion verwenden. sonmst wird es für mich kompliziert

Code:
plot(rote,u(rote),'r.')
hold on
plot(gruene,u(gruene),'g.')
plot(schwarze,u(schwarze),'k.')
 


kann man es vielleicht in eine funktion packen-
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 04.04.2013, 16:32     Titel:
  Antworten mit Zitat      
Hallo, klar kann man genau diesen code, den du gepostet hast, in eine Funktion schreiben

Code:
function = rotegrueneschwarzeplotten(u, rote, gruene, schwarze)

plot(rote,u(rote),'r.')
hold on
plot(gruene,u(gruene),'g.')
plot(schwarze,u(schwarze),'k.')

end
 


Damit kannst du dann in einem subplot plotten
Code:

figure
subplot(1,2,1)
rotegrueneschwarzeplotten(u, rote, gruene, schwarze)
 


Meinst Du das so, oder doch etwas anderes?
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.04.2013, 00:50     Titel:
  Antworten mit Zitat      
Japp, mit deiner Methode läuft es einwandfrei. Abgesehen davon dass die Legende nicht angezeigt wird. AN was kann es liegen?

Code:
subplot(1,2,1)
rotegrueneschwarzeplotten(u, rote, gruene, schwarze)
legend(...........);
title('...............');
hold on;
 
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 17.04.2013, 08:02     Titel:
  Antworten mit Zitat      
Hallo,

bei mir klappt
Code:
figure
subplot(1,2,1)
rotegrueneschwarzeplotten(u, rote, gruene, schwarze)
legend('rot','grün','schwarz');
title('ein titel');


einwandfrei. Was passiert bei Dir?
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.04.2013, 15:16     Titel:
  Antworten mit Zitat      
Die Legenden sind nicht zu sehen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 17.04.2013, 16:25     Titel:
  Antworten mit Zitat      
Hallo,

bitte poste den Befehl, mit dem Du die Legende erzeugen willst. Ich gehe einfach davon aus, dass
Code:

nur als Platzhalter gedacht ist. Erscheint denn bei dem von mir beschriebenen Beispiel die Legende bei Dir, wenn Du das ausführst?
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.04.2013, 16:52     Titel:
  Antworten mit Zitat      
Die Legende ist ja korrekt, schließlich geht es mit
subplot() plot() legend()

sobald ich es durch
subplot() meineausgabefunktion() legend()

ersetze, wird es nicht angezeigt. komisch.. ich versuche es mal zu posten
 
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 - 2025 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.