2017-06-13 3 views
1

Est-il possible d'effacer une zone d'un tracé, sans manipulation directe des données que vous entrez dans le tracé (a posteriori)?Effacer la zone du tracé matlab a posteriori

E.g. Zone ci-dessous y = x tandis que la zone ci-dessus est conservée.

+0

Je ne sais pas comment, mais quel genre d'intrigue? Juste des lignes? Peut-être un exemple d'intrigue, avec le code pour le produire, serait utile (éditez votre question) – Steve

+0

Il y a plusieurs façons de le faire, mais laquelle est la meilleure dépend fortement de ce que vous voulez cacher? Quelle forme a-t-il? Est-il contraint par une fonction (s)? est-ce lié à la position dans les axes? Comment définissez-vous la zone à cacher? – EBH

+0

Je travaille actuellement avec un tracé de contour, et je veux cacher la partie des niveaux tracés qui est en dessous d'une certaine courbe, qui pourrait bien être y = x – Peter

Répondre

2

Vous pouvez utiliser area avec la couleur du visage blanc à blanc la zone de la parcelle en dessous d'une ligne donnée:

t = linspace(0,20,500); 
plot(t, sin(t)) % example plot 
yl = ylim; 
hold on 
y = .4 - t * .05; % example limit line 
area(t, y, yl(1), 'Facecolor', 'w', 'edgecolor', 'none'); 

enter image description here

+0

Qu'est-ce que yl ou ylim? – Peter

+1

'ylim' renvoie les limites de l'axe y. Ceux-ci sont affectés à la variable 'yl' afin qu'ils puissent être utilisés plus tard dans la création de la zone. – Wolfie

+0

Désolé, cela ne fonctionne pas. Il supprime tout ce qui est en dessous de ylim (qui est un nombre). Mais pas en dessous de y, qui est la courbe – Peter

1

Voici une façon de le faire en traçant seulement ce qui est nécessaire, et remplacer toutes les autres valeurs avec nan:

[X,Y,Z] = peaks; 
Z(X>Y) = nan; 
contour(X,Y,Z,20) 

covered_contour