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

Colorbar blau-weiß-rot

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.02.2012, 16:17     Titel: Colorbar blau-weiß-rot
  Antworten mit Zitat      
Hallo zusammen,

ich sitz jetzt schon lange an einem Problem und komm nicht voran. Ich hab auch viel in diesem Forum gestöbert aber nicht das passende gefunden =(
Vlt. könnt ihr mir ja weiterhelfen.
zu meine Problem:
ich hab viele punktweise Datensätze. Ich bilde die Differenzen und möchte diese nun in einem imagesc plot darstellen. das funktioniert auch super.
nur möchte ich keine "normale" colormap verwenden, sondern eine, bei der das Minimum blau, die Null weiß und das Maximum in Rot angezeigt wird.
Mit

Code:

mymap=([0 0 1; 1 1 1; 1 0 0]);
set(0,'DefaultAxesColorOrder',mymap);
 


komm ich nicht zum gewünschten Ergebnis.

Ich weiß, dass man das im Colormapeditor einstellen kann, nur muss ich so mehr als 20 Images erstellen und das jedes mal von Hand zu machen ist ja nun auch keine Lösung.

Ich wär euch echt dankbar, wenn ihr mir helfen könntet.
Danke schon ein mal im Voraus


outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 17.02.2012, 16:49     Titel:
  Antworten mit Zitat      
Starte COLORMAPEDITOR, stelle die gewünschten Farbvektor ein (Entferne alle colorticks, setze links weiss und rechts blau) und das wars schon.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.02.2012, 16:54     Titel:
  Antworten mit Zitat      
Hallo,
ich wills doch aber gerade nicht per Hand im COLORMAPEDITOR machen. hab ja nicht nur eine Abbildung
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 17.02.2012, 17:05     Titel:
  Antworten mit Zitat      
Mach es einmal mit dem Colormap-Editor, danach kannst Du den Vektor aus dem Figure auslesen, abspeichern und weiterverwenden.
Code:
clrmap = get(gcf,'Colormap')


OK, gut - in Deinem Falle ist es einfach das selbst auszurechnen
Code:
n = 20
clrmap = zeros(n,3)
clrmap(:,1) = linspace(1,0,n)
clrmap(:,3) = linspace(0,1,n)


Gruß

Zuletzt bearbeitet von outsider am 17.02.2012, 17:17, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 17.02.2012, 17:15     Titel:
  Antworten mit Zitat      
hmm... wenn es über weiss gehen soll, dann ist es etwas komplizierter

versuche damit. 64 Farben von Blau nach Weiss und nach Rot
Code:
[linspace(0,1,32)' linspace(0,1,32)' ones(32,1); ones(32,1) linspace(1,0,32)' linspace(1,0,32)']


Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.02.2012, 17:17     Titel:
  Antworten mit Zitat      
Danke für die schnelle Antwort.
Ok das hab ich gemacht und dann muss ichs doch mit dem

Code:

set(0,'DefaultAxesColorOrder','clrmap')
 


aufrufen, oder?
Aber da bekomm ich ne Fehlermeldung =(

??? Error using ==> set
Colormap must be an array of type double, float or sparse

Error in ==> Darstellung_abw_zu_vorh_messung at 54
set(0,'DefaultAxesColorOrder','clrmap')

Was ist also noch falsch?
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 17.02.2012, 17:19     Titel:
  Antworten mit Zitat      
Du musst clrmap als Variable und nicht als String übergeben.

Ich würde Dir keinesfalls empfehlen die Default-Settings zu überschreiben. Denn falls Du Dein Skript jemandem weiterreichst oder auf einem anderen MATLAB-Rechner aufrufst, dann hast Du anderen Farbverlauf.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.02.2012, 17:29     Titel:
  Antworten mit Zitat      
Ok, hab beide Varianten probiert. Sie laufen beide durch, aber mein Farbbalken ist immer noch nicht so wie gewünscht. Ich schick euch ma den ganzen Code:

Code:

figure(i);
    hold on;
    box on;
    imagesc(xx,yy,ZI);
    colorbar;
    %n = 20
    %clrmap = zeros(n,3)
    %clrmap(:,1) = linspace(1,0,n)
    %clrmap(:,3) = linspace(0,1,n)
    %oder
    clrmap=([linspace(0,1,32)' linspace(0,1,32)' ones(32,1); ones(32,1) linspace(1,0,32)' linspace(1,0,32)']);
    set(0,'DefaultAxesColorOrder',clrmap)
   
    caxis([-600 200]);
    xlabel('Profil [m]', 'fontsize',10, 'fontweight','bold');
    ylabel('Tiefe [m]', 'fontsize',10, 'fontweight','bold');
    title(['Abweichung der Messdaten','bold');
    drawnow;

 


wenn ich das nicht überschreiben soll, wie kann ichs denn sonst machen. Denn auf andern Rechnern muss es ja auch laufen.
Entschuldigt die vielen Fragen, bin noch nicht so vertraut mit MATLAB.
Ich danke euch für die Tipps und Hinweise
 
Harald
Forum-Meister

Forum-Meister


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

mit
Code:

statt dem set-Befehl.

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.02.2012, 19:39     Titel:
  Antworten mit Zitat      
ja klar =D war wohl zu einfach^^
Danke.

Darf ich dann noch ne Frage stellen? Embarassed

wie schaff ich es jetzt noch, dass die das genau die Null weiß ist?
Ich würde gern die Einteilung der Achse so lassen und den Farbbalken anpassen.
Andere Möglichkeit ist natürlich die Achse von -600 bis 600 gehen zu lassen. würd ich aber gern vermeiden.
Geht das irgendwie?

Danke noch mal für eure MEGA HILFE.
DANKE DANKE DANKE
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.02.2012, 15:39     Titel:
  Antworten mit Zitat      
Hallo,

versuch mal, die Anzahl der Farben proportional zu wählen.

Beispiel:
-100 = blau
0 = weiß
600 = rot

heißt, dass du zwischen weiß und rot 6 mal so viele Zwischenfarben brauchst wie zwischen blau und weiß.

Grüße,
Harald
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 - 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.