Punkte färben, die außerhalb der Grenzen liegen
remix92
Forum-Fortgeschrittener
Beiträge: 61
Anmeldedatum: 11.07.17
Wohnort: ---
Version: ---
Verfasst am : 03.11.2017, 16:25
Titel : Punkte färben, die außerhalb der Grenzen liegen
Hallo zusammen,
ich hänge an ein Problem fest...
undzwar würde ich gerne Punkte, die außerhalb der Standardabweichung liegen, gerne rot markieren.
Mein Code sieht folgendermaßen aus:
Code:
b=7 ;
TestData = randn ( 100 ) ;
for k=1 :size ( TestData,2 ) ;
mean_new( k,:) = mean ( TestData( :,k) ) ;
std_big( k,:) = mean ( TestData( :,k) ) + std ( TestData( :,k) ) ;
std_low( k,:) = mean ( TestData( :,k) ) - std ( TestData( :,k) ) ;
plot ( TestData( :,b) ,'b. ')
line ( xlim ,[ mean_new( b,1 ) ,mean_new( b,1 ) ] ,'Color ','green ')
line ( xlim ,[ std_low( b,1 ) ,std_low( b,1 ) ] ,'Color ','red ')
line ( xlim ,[ std_big( b,1 ) ,std_big( b,1 ) ] ,'Color ','red ')
if TestData( :,b) > std_big( b,1 )
plot ( TestData( :,b) ,'r. ')
end
if TestData( :,b) < std_low( b,1 )
plot ( TestData( :,b) ,'r. ')
end
lgd= legend ( [ 'Data Points '] ,[ 'Ideal = ' num2str ( mean_new( b,1 ) ) ] ,[ 'UpperLimit = ' num2str ( std_big( b,1 ) ) ] , [ 'LowerLimit = ' num2str ( std_low( b,1 ) ) ] ) ;
set ( lgd,'Location ','northEastoutside ','FontSize ',12 ) ;
end
In Diesem Beispiel erzeuge ich ein 100x100 matrix, bei dem ich dann die Punkte von Spalte 7 plotten lasse. Dazu berechne ich den Ideal Wert mit der Funktion mean und setzte jeweils als Grenzen fest:
obere Grenze: IdealWert + Standardabweichung
untere Grenze: IdealWert - Standardabweichung
nun würde ich gerne alle Punkte, die außerhalb der Grenzen liegen als Rote Punkte im Plot darstellen lassen...
Leider weiß ich nicht wie....
Wäre für jede Hilfe sehr Dankbar
Gruß
Harald
Forum-Meister
Beiträge: 24.449
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
Verfasst am : 03.11.2017, 18:36
Titel :
remix92
Themenstarter
Forum-Fortgeschrittener
Beiträge: 61
Anmeldedatum: 11.07.17
Wohnort: ---
Version: ---
Verfasst am : 04.11.2017, 18:45
Titel :
Vielen Dank für deine Antwort
Es funktioniert,aber nicht so wie es gerne haben würde
Es werden zusätzliche rote Punkte eingefügt.
Ich würde aber gerne mir wünschen, dass die "Außreiser" durch rote Punkte ersetzt werden.
Siehe Bilder
Ist es denn möglich die Ausreißer durch rote Punkte zu ersetzen ?
Vielen Dank nochmal für die Hilfe
Gruß
Beschreibung:
Download
Dateiname:
STD_Bild.jpg
Dateigröße:
20.29 KB
Heruntergeladen:
247 mal
Beschreibung:
Download
Dateiname:
STD_Bild.fig
Dateigröße:
499.44 KB
Heruntergeladen:
280 mal
Harald
Forum-Meister
Beiträge: 24.449
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
Verfasst am : 04.11.2017, 22:39
Titel :
Hallo,
dann solltest du den vorherigen Plot durch eine logische Bedingung auf die gewünschten Punkte beschränken.
Grüße,
Harald
remix92
Themenstarter
Forum-Fortgeschrittener
Beiträge: 61
Anmeldedatum: 11.07.17
Wohnort: ---
Version: ---
Verfasst am : 05.11.2017, 18:28
Titel :
Hallo,
das habe ich versucht, aber leider ohne Erfolg...
Code:
hold on
datavec = TestData( :,b) ;
plot ( datavec( std_low( b,1 ) < datavec < std_big( b,1 ) ) ,'b. ')
plot ( datavec ( datavec > std_big( b,1 ) ) ,'r. ')
plot ( datavec ( datavec < std_low( b,1 ) ) ,'r. ')
line ( xlim ,[ mean_new( b,1 ) ,mean_new( b,1 ) ] ,'Color ','green ')
line ( xlim ,[ std_low( b,1 ) ,std_low( b,1 ) ] ,'Color ','red ')
line ( xlim ,[ std_big( b,1 ) ,std_big( b,1 ) ] ,'Color ','red ')
Wo liegt mein Feher ?
Harald
Forum-Meister
Beiträge: 24.449
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
Verfasst am : 05.11.2017, 20:03
Titel :
Hallo,
ein Fehler ist hier:
Grüße,
Harald
remix92
Themenstarter
Forum-Fortgeschrittener
Beiträge: 61
Anmeldedatum: 11.07.17
Wohnort: ---
Version: ---
Verfasst am : 05.11.2017, 20:48
Titel :
Vielen Dank
Ist es denn möglich, die Ausreißer (rot markierte Punkte) auf die ursprüngliche Position zu versetzen ?
Die Bilder "orginal" und "bearbeitet" im Anhang zeigen den Unterschied
Ich habe es versucht mit folgendem Code, leider ohne Erfolg...
Code:
datavec( m,1 ) = TestData( :,b) ;
for m=1 :size ( datavec,1 ) ;
hold on
plot ( datavec( std_low( b,1 ) < datavec & datavec< std_big( b,1 ) ) ,'b. ')
plot ( datavec( m,1 ) ( datavec > std_big( b,1 ) ) ,'r. ')
plot ( datavec( m,1 ) ( datavec < std_low( b,1 ) ) ,'r. ')
end
Beschreibung:
Download
Dateiname:
orginal.jpg
Dateigröße:
42.52 KB
Heruntergeladen:
257 mal
Beschreibung:
Download
Dateiname:
bearbeitet.jpg
Dateigröße:
35.21 KB
Heruntergeladen:
252 mal
Harald
Forum-Meister
Beiträge: 24.449
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
Verfasst am : 05.11.2017, 22:43
Titel :
Hallo,
ich würde generell die Syntax
plot ( x,y)
verwenden. In deinem Fall mit
x = 1 :length ( y)
. Dann kannst du aus y und x die nicht gewünschten Punkte entfernen, und die verbleibenden Punkte bleiben an der ursprünglichen Position.
Grüße,
Harald
remix92
Themenstarter
Forum-Fortgeschrittener
Beiträge: 61
Anmeldedatum: 11.07.17
Wohnort: ---
Version: ---
Verfasst am : 06.11.2017, 17:49
Titel :
Hallo,
Vielen Dank für deinen Tipp...
Leider weiß ich nicht so recht, dein Tipp umzusetzen...
Der Befehl
ist mir zwar bekannt, aber kann den für mein Fall leider nicht umsetzen.....
Im Anhang befindet sich auch das M.File
Wenn du eventuell mal zeit hättest könntest du da mal reinschauen ?
Wäre sehr nett
Der Interessante Teil vom Code wäre nur der:
Variable k greift Spaltenweiße auf alle Zeileneinträge zu!
Gruß
Beschreibung:
Download
Dateiname:
std_big_data.m
Dateigröße:
864 Bytes
Heruntergeladen:
240 mal
Harald
Forum-Meister
Beiträge: 24.449
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
Verfasst am : 06.11.2017, 17:58
Titel :
Hallo,
Code:
TestData = randn ( 1000 ,3 ) ;
for k=1 :size ( TestData,2 ) ;
mean_new( k,:) = mean ( TestData( :,k) ) ;
std_big( k,:) = mean ( TestData( :,k) ) + std ( TestData( :,k) ) ;
std_low( k,:) = mean ( TestData( :,k) ) - std ( TestData( :,k) ) ;
datavec = TestData( :,k) ;
figure ( k)
x = 1 :length ( datavec) ;
hold on
filt1 = std_low( k,1 ) < datavec & datavec < std_big( k,1 ) ;
plot ( x( filt1) , datavec( filt1) ,'b. ')
line ( xlim ,[ mean_new( k,1 ) ,mean_new( k,1 ) ] ,'Color ','green ')
line ( xlim ,[ std_low( k,1 ) ,std_low( k,1 ) ] ,'Color ','red ')
line ( xlim ,[ std_big( k,1 ) ,std_big( k,1 ) ] ,'Color ','red ')
filt2 = datavec > std_big( k,1 ) ;
plot ( x( filt2) , datavec ( filt2) ,'r. ')
filt3 = datavec < std_low( k,1 ) ;
plot ( x( filt3) , datavec ( filt3) ,'r. ')
lgd= legend ( [ 'Data Points '] ,[ 'Ideal = ' num2str ( mean_new( k,1 ) ) ] ,[ 'UpperLimit = ' num2str ( std_big( k,1 ) ) ] , [ 'LowerLimit = ' num2str ( std_low( k,1 ) ) ] ) ;
set ( lgd,'Location ','northEastoutside ','FontSize ',12 ) ;
hold off
end
Grüße,
Harald
remix92
Themenstarter
Forum-Fortgeschrittener
Beiträge: 61
Anmeldedatum: 11.07.17
Wohnort: ---
Version: ---
Verfasst am : 06.11.2017, 18:19
Titel :
Perfekt
Vielen Dank
Einstellungen und Berechtigungen
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
| 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.