2016-11-25 13 views
0

Ich habe das folgende Skript:MATLAB wie Kontur mit speziellen Linewidth für bestimmten Wert plotten

close all; clear all; clc; 

x = linspace(-2*pi,2*pi); 

y = linspace(0,4*pi); 

[X,Y] = meshgrid(x,y); 

Z = sin(X)+cos(Y); 

values = -10:0.5:10; 

figure 

[C,hh] = contour(X, Y, Z, values,'r', 'LineWidth',1); 

clabel(C, hh, values, 'fontsize',7) 

Wie Sie mit in den Konturlinien, alle Linien aufgetragen sind Linewidth = 1 sehen kann Ich mag würde um eine spezielle Linie für den Wert = 0 zu zeichnen, mit LineWidth = 2, wie man es einstellt? Vielen Dank für Ihre Hilfe.

+2

Du musst machen ein sekundäres 'Kontur'-Diagramm. Siehe: [Highlight Specific Contour Levels] (https://www.mathworks.com/examples/matlab/mw/graphics-ex63999328-highlight-specific-contour-levels) – excaza

+0

Vielen Dank. Es klappt – User1961

Antwort

1

Sie müssen ein zweites Konturdiagramm erstellen, um die gewünschten Konturpegel zu markieren. The MathWorks hat an example of this in der Dokumentation.

Für Ihren Fall werden wir so etwas wie die folgenden haben:

% Generate sample data 
x = linspace(-2*pi,2*pi); 
y = linspace(0,4*pi); 
[X,Y] = meshgrid(x,y); 
Z = sin(X)+cos(Y); 
values = -10:0.5:10; 

% Generate initial contour plot 
figure 
[C,hh] = contour(X, Y, Z, values,'r', 'LineWidth',1); 
clabel(C, hh, values, 'fontsize',7) 

% Generate second contour plot with desired contour level highlighted 
hold on 
contour(X, Y, Z, [0 0], 'b', 'LineWidth', 2); 
hold off 

Welche gibt die folgende:

yay

Nicht, dass ich die einzige Kontur Ebene als Vektor angegeben haben . Dies wird durch the documentation for contour erläutert:

contour(Z,v) zeichnet ein Konturdiagramm der Matrix Z mit Konturlinien an den Datenwerten in den monoton steigenden Vektor spezifiziert v. Um eine einzelne Konturlinie bei einem bestimmten Wert anzuzeigen, definieren Sie v als Vektor mit zwei Elementen, wobei beide Elemente der gewünschten Konturebene entsprechen. Zum Beispiel Konturlinien auf der Ebene k verwenden contour(Z,[k k])

zu zeichnen Wenn Sie mehrere Ebenen markieren wollen, dann gilt dies nicht (zB contour(X, Y, Z, [-1 0], 'b', 'LineWidth', 2) hervorzuheben -1 und 0)