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

Logarithmische Farbskala für Contour-plot

 

Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 27.11.2007, 09:50     Titel: Logarithmische Farbskala für Contour-plot
  Antworten mit Zitat      
Hallo,

ich habe folgendes Problem: Ich möchte Höhenlinien mit contour darstellen. Es hat sich herausgestellt, dass eine logarithmische Skala nötig ist, damit die Linien nicht alle in einer Region zusammengedrängt sind. Also gebe ich die Funktionswerte, bei denen Linien gezeichnet werden sollen, explizit an:

Code:
[X,Y] = meshgrid(-8:.5:8);
Z = exp(-X.*Y);
contour(X,Y,Z)
figure
val = logspace(-28,26,20);
contour(X,Y,Z,val)


So weit, so gut. Allerdings sind jetzt fast alle Höhenlinien dunkelblau, eine ist dunkelrot. Shocked Das liegt daran, dass die Farbskala noch linear und nicht logarithmisch ist.
Gibt es eine Möglichkeit, auch die Farbskala logarithmisch zu wählen? Idealerweise so, dass auch die colorbar sinnvoll aussieht? Ansonsten muss ich wohl die Farbwerte händisch zuweisen, aber das sollte wirklich ultima ratio sein.

Vielen Dank schon mal! Herzliche Grüße
Bijick
_________________

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


outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 27.11.2007, 11:30     Titel:
  Antworten mit Zitat      
Hi Bijick,

diese Links sollten Dir auf jeden Fall weiterhelfen.

How do I create a contour plot with a logarithmic scale and colorbar?
http://www.mathworks.com/support/solutions/data/1-2H5IF9.html

How do I create a logarithmic scale colormap or colorbar?
http://www.mathworks.com/support/solutions/data/1-16X5V.html



MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Themenstarter

Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 27.11.2007, 16:44     Titel:
  Antworten mit Zitat      
Vielen Dank, der erste war ein Volltreffer! Hier die Lösung, falls es noch mal jemand braucht:

Code:
close all;figure;
hold on;
% Supply arrays for x, y, and z values
[C,g] = contour(X,Y,Z,1:1:1000); % Create standard contour plot first
colormap(jet); % Create custom colormap
h = colorbar; % Add colorbar
set(h,'YScale','log'); % Change colorbar scale to log
hold(h); % Hold the colorbar
z2 = log10(Z); % Take log10() of data
cla; % Clear contour plot
contour(X,Y,z2,0:0.5:3); % Plot log10 data, keeping the logarithmic
% colorbar for the original data
axis tight % Fill entire axes with contour plot


Das Beispiel hier geht nicht so gut, weil man zunächst einen normal skalierten contour-plot braucht. Also ist je nach Wertebereich nur ein Ausschnitt darstellbar. Bei meinem tatsächlichen Problem geht es glücklicherweise besser. Also danke nochmals.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Michaela
Forum-Century

Forum-Century


Beiträge: 239
Anmeldedatum: 12.07.07
Wohnort: ---
Version: bis 2007b
     Beitrag Verfasst am: 27.11.2007, 20:03     Titel:
  Antworten mit Zitat      
Ich habe das vor einiger Zeit für ein pcolor anders gelöst: Den Plot gleich von den logarithmierten Daten machen, und dann die CTickLabels des Colorbars umschreiben. Das geht genauso wie das ersetzen der XTickLabels der X-Achse.

Gruß,
Michaela
_________________

---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Themenstarter

Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 28.11.2007, 13:49     Titel:
  Antworten mit Zitat      
Hallo Michaela,

das ist ja noch viel besser (weil kürzer). Jetzt sieht es so aus:

Code:
contour(X,Y,log10(Z),-4:0);
colormap(jet(5));
colorbar('YTick',-4:0,'YTickLabel',{'0.0001','0.001','0.01','0.1','1'});


und die Grafik ist genau so, wie ich sie haben wollte. Vielen Dank!

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Michaela
Forum-Century

Forum-Century


Beiträge: 239
Anmeldedatum: 12.07.07
Wohnort: ---
Version: bis 2007b
     Beitrag Verfasst am: 28.11.2007, 19:53     Titel:
  Antworten mit Zitat      
Hallo Bjick,


freut mich, dass ich Dir auch mal helfen konnte Laughing
Bislang wars ja immer andersrum..
_________________

---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
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.