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

Boxplots nach Mediane sortieren

 

mchatt
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 01.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2021, 17:22     Titel: Boxplots nach Mediane sortieren
  Antworten mit Zitat      
Hallo Zusammen,

ich habe folgende Frage:
Ich habe mehrere Boxplots auf einem Figure erstellt und würde sie gerne nach Mediane sortieren. Also es soll so aussehen, dass der Box mit der kleinsten Median ganz links und der mit dem größsten Median ganz rechts ist.
Ich habe folgende Lösung gefunden, aber ich kriege die Fehlermeldung:
"First input SUBS must contain positive integer subscripts."
Code:

Data_1 = [10,2,3,4,5,6,7,8,9];
groups_1 = [1,1,2,2,3,3,4,4,5];

[~,ind] = sort(accumarray(groups_1.',Data_1,[],@mean));
ord1 = sortrows([(1:max(groups_1)).' ind],2);
% without repelem:
a = ord1(:,1);
b = histcounts(groups_1);
idx(cumsum([1 b(b>0)])) = 1;
c = a(cumsum(idx(1:find(idx,1,'last')-1)));
Data_Corrected_1 = sortrows([c groups_1.' Data_1.'],1);
% with repelem:
% Data_Corrected_1 = sortrows([repelem(ord1(:,1),histcounts(groups_1))...
%    groups_1.' Data_1.'],1);
boxplot(Data_Corrected_1(:,3),Data_Corrected_1(:,1));
 


Bitte um Eure Hilfe und ich freue mich auf Eure Antwort!

Vielen Dank!
_________________

mchatt
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.05.2021, 18:50     Titel:
  Antworten mit Zitat      
Hallo,

bei mir läuft der Code so fehlerfrei durch. Vielleicht mal den Workspace leeren und nochmal versuchen. Falls das Problem weiterhin besteht: welches Release verwendest du?

Im übrigen sortiert der Code nach Mittelwert, nicht nach Median.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
mchatt
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 01.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2021, 19:08     Titel:
  Antworten mit Zitat      
Hallo,

danke für Deine Antwort. Also ich habe ein größeren Datensatz und dieser Code funkltoniert bei mir nicht, weil meine Daten negative Werte enthält. Diese Lösung habe ich im Internet gefunden. Anscheinend tut sie nicht das was ich haben möchte.

Hättest Du vielleicht eine Idee, wie man das mit dem Median macht? Ich konnte im Internet leider nichts dazu finden!

Vielen Dank!
_________________

mchatt
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.05.2021, 20:02     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Also ich habe ein größeren Datensatz und dieser Code funkltoniert bei mir nicht, weil meine Daten negative Werte enthält.

Negative Daten sollten kein Problem sein. Sind die Gruppen auch negativ? Das wirkt dann merkwürdig auf mich. Poste bitte generell Beispiele, bei denen die Probleme auch auftreten.

Zitat:
Anscheinend tut sie nicht das was ich haben möchte.

Mit dem Beispieldatensatz sieht es doch gut aus. Was bei deinem Datensatz ggf. schief geht, sieht man erst, wenn man es auf deinen Datensatz anwendet.

Zitat:
Hättest Du vielleicht eine Idee, wie man das mit dem Median macht?

@median statt @mean verwenden. Sollte an sich naheliegend sein.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
mchatt
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 01.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2021, 20:33     Titel:
  Antworten mit Zitat      
Hallo,

alles klar, das macht Sinn. Hier ist mein Code und ich habe noch ein Ausschnitt vom Datensatz angehängt Smile

Vielen Dank!
Code:

opts = detectImportOptions('C:\Users\MCP\Desktop\Beispiel\Daten');  
Table_1 = readtable('C:\Users\MCP\Desktop\Beispiel\Daten.txt', opts);
Array=table2array(Table_1);
groups_1= Array(:,1).'; Data_1=Array(:,2);
[~,ind] = sort(accumarray(groups_1.',Data_1,[],@mean));
ord1 = sortrows([(1:max(groups_1)).' ind],2);
% with repelem:
Data_Corrected_1 = sortrows([repelem(ord1(:,1),histcounts(groups_1))...
   groups_1.' Data_1.'],1);
boxplot(Data_Corrected_1(:,3),Data_Corrected_1(:,1));
 


Herzliche Grüße,

Daten.txt
 Beschreibung:

Download
 Dateiname:  Daten.txt
 Dateigröße:  11.05 KB
 Heruntergeladen:  158 mal

_________________

mchatt
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.05.2021, 21:44     Titel:
  Antworten mit Zitat      
Hallo,

das Problem waren nicht negative Zahlen, sondern fehlende (NaN) und nicht aufeinanderfolgende Gruppenangaben.
Dann wäre noch die Empfehlung, nicht nach irgendwelchen, möglicherweise sehr veralteten Code-Schnipseln im Internet zu suchen, sondern erst mal die Dokumentation zu bemühen. Warum dieses ganze Gefrickel, wenn boxplot die Option GroupOrder anbietet, die genau dafür gedacht ist?

Code:
opts = detectImportOptions('Daten.txt');  
Table_1 = readtable('Daten.txt', opts);
Table_1 = rmmissing(Table_1);
Array=table2array(Table_1);
groups_1= categorical(Array(:,1)); Data_1=Array(:,2);
[~,ind] = sort(groupsummary(Data_1, groups_1,@median));
cats = categories(groups_1);
boxplot(Data_1, groups_1, 'GroupOrder', cats(ind));


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
mchatt
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 01.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.06.2021, 07:28     Titel:
  Antworten mit Zitat      
Hallo,

vielen Dank! es hat funktioniert Smile
Ich habe mir die Doku schon angeguckt und konnte leider dies nicht herausfinden! Danke für Deine Hilfe Smile

Ich habe noch eine Frage: Wie könnte man nun die Boxplots nach der größe des Interquantilbereichs sortieren? Also der kleinste Box ganz links und der größte ganz rechts.

Herzliche Grüße,
_________________

mchatt
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.06.2021, 08:37     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Wie könnte man nun die Boxplots nach der größe des Interquantilbereichs sortieren? Also der kleinste Box ganz links und der größte ganz rechts.

@iqr statt @median

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.