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

Contourf - Colorbar nicht linear

 

str4nger
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 30.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2011, 11:26     Titel: Contourf - Colorbar nicht linear
  Antworten mit Zitat      
Hallo,
ich bin im Moment dabei Muschelkennlinien von Verbrennungsmotoren zu plotten. Jetzt würde ich gerne die Colorbar nicht linear einteilen.

Beispielsweise heisst das, dass von 300-400 kg/kWh 3/4 des Farbspektrums verwendet werden und das letzte Viertel für die restlichen Werte von 400-4000 geht.

Weiss jemand wie ich das machen kann? Einen Vektor der zumindestens die entsprechenden Linien einteilt habe ich schon festgelegt, die Colormap passt sich trotzdem linear an.

Ich danke euch sehr für den Antworten

Lg
Private Nachricht senden Benutzer-Profile anzeigen


str4nger
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 30.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2011, 15:03     Titel: ?
  Antworten mit Zitat      
Ist die Frage nicht ausreichend formuliert oder gibt es sonst irgendwelche Verständnisprobleme?

Ich helfe gerne Smile

Freue mich über Antworten
Private Nachricht senden Benutzer-Profile anzeigen
 
mawi
Forum-Century

Forum-Century


Beiträge: 106
Anmeldedatum: 14.04.11
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 04.08.2011, 15:55     Titel:
  Antworten mit Zitat      
Das einzige was mir dazu einfällt:

du kannst contourf einen Vektor geben der angibt bei welchen Werten eine ISO-Linie eingetragen werden soll.
Code:


die Skalierung der colorbar kann man meines Wissens nur zwischen linear und log umschalten, zumindest wenn der Aufwand überschaubar sein soll^^

Gruß mawi
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 05.08.2011, 09:49     Titel:
  Antworten mit Zitat      
Wenn der Aufwand auch größer sein darf (weil Du etwa immer die von Dir genannte Skala brauchst und das für viele Grafiken), dann geht das mit dem

Code:


Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
str4nger
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 30.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.08.2011, 15:18     Titel: :(
  Antworten mit Zitat      
Leider bin ich glaube ich noch nicht richtig verstanden worden, deshalb habe ich jetzt noch ein Bild angefügt auf dem eine Skala gezeigt ist wie ich Sie auch gerne erzeugen möchte.

Wie bekommt man so eine (Farb-)Skalierung hin?

Bin echt am verzweifeln Sad

Colormap_Skalierung.JPG
 Beschreibung:
Gewollte Skalierung
(Bild wurde im Internet gefunden)

Download
 Dateiname:  Colormap_Skalierung.JPG
 Dateigröße:  93.44 KB
 Heruntergeladen:  683 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.08.2011, 16:30     Titel:
  Antworten mit Zitat      
Ob es da ne einfache Lösung über die colormap gibt weiß ich nicht, ich denke du musst die Daten anpassen.

Hast du dir das so vorgestellt?

Code:
A % deine Matrix

A1=A;
A1(A1<400)=NaN; % Werte kleiner 400
A2=A;
A2(A2>=400)=NaN; % Werte größer 400

A11=75*(A1-min(A1(:)))/(max(A1(:))-min(A1(:)));  % auf 0-75 skaliert
A22=25*(A2-min(A2(:)))/(max(A2(:))-min(A2(:)))+75; % auf 75 - 100 skaliert


A22(isnan(A22))=0;
A11(isnan(A11))=0;

AA=A11+A22; % Beides wieder zusammenfügen

contourf(AA)
ch=colorbar; % colorbar anpassen
set(ch,'yticklabel',num2str(round([linspace(300,400,7),linspace(1000,4000,3)]')));
 
str4nger
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 30.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.08.2011, 17:06     Titel: Danke
  Antworten mit Zitat      
Danke Gast!
Das sieht schonmal ganz gut aus. Muss jetzt nur noch genau verstehen was du da gebastelt hast damit ich es noch genauer anpassen kann.

Magst du vielleicht noch 1-2 Kommentare zum Code hinzufügen? Smile

Ich danke dir!!!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.08.2011, 19:41     Titel:
  Antworten mit Zitat      
Ich werde es versuchen:

Code:

A1=A;
A1(A1<400)=NaN; % Werte kleiner 400
A2=A;
A2(A2>=400)=NaN; % Werte größer 400
 


In A1 stehen dann nur noch die Zahlen die kleiner als 400 sind, an allen anderen Stellen ein NaN (not a number).
In A2 entsprechend alle Zahlen ab 400.

Code:

A11=75*(A1-min(A1(:)))/(max(A1(:))-min(A1(:)));  % auf 0-75 skaliert
A22=25*(A2-min(A2(:)))/(max(A2(:))-min(A2(:)))+75; % auf 75 - 100 skaliert
 

Hier findet eine Skalierung statt, A1 wird auf 0 bis 75 skaliert (3/4 des neuen Wertebereichs), A2 auf 75 bis 100 (1/4 des neuen Wertebereichs)

Hier noch kurz die passende Formel dazu:

<br />
x_{neu}=\frac{(max_{neu}-min_{neu}  )*(x- min_{alt})}{max_{alt}-min_{alt} } +min_{neu} 
<br />

In A11 stehen nun alle Werte, die ursprünglich kleiner als 400 waren,
skaliert auf 75% des neuen Wertebereichs.

In A22 stehen nun alle Werte, die ursprünglich größer als 400 waren, skaliert auf 25% des neuen Wertebereichs.

Code:

A22(isnan(A22))=0;
A11(isnan(A11))=0;
 

Die NaNs werden hier auf 0 gesetzt, damit die beiden Matrizen wieder addierbar werden.


Code:

contourf(AA)
ch=colorbar; % colorbar anpassen
set(ch,'yticklabel',num2str(round([linspace(300,400,7),linspace(1000,4000,3)]')));
 

hier ändere ich die Zahlen der Colorbar, das kann man sicher noch schöner machen, ich wollte nur zeigen, wo man das anpassen kann.
 
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.