Question

J'utilise des tracés polaires (POLAR (THETA, RHO)) dans MATLAB.

Existe-t-il un moyen simple de fixer la plage de l’axe radial à 1,5?

Je cherche quelque chose d'analogue aux commandes xlim, ylim pour les axes cartésiens. Je n'ai encore rien trouvé dans la documentation.

Était-ce utile?

La solution

Voici comment j'ai pu le faire.

Le graphique polaire MATLAB (si vous examinez les options Handle Graphics disponibles) n’a rien de tel que xlim ou ylim. Cependant, je me suis rendu compte que la première chose tracée tracée définissait la plage, ainsi j’ai pu tracer une fonction avec une plage de rayon [-.5 .5] sur une parcelle [-1 1] comme suit:

theta  = linspace(0,2*pi,100);
r      = sin(2*theta) .* cos(2*theta);
r_max  = 1;
h_fake = polar(theta,r_max*ones(size(theta)));
hold on;
h      = polar(theta, r);
set(h_fake, 'Visible', 'Off');

Cela ne semble pas très beau et, espérons-le, il existe une meilleure façon de le faire, mais cela fonctionne.

Autres conseils

cela a fonctionné pour moi ... je voulais que la plage de rayon atteigne 30, donc j'ai tracé cette

polar(0,30,'-k')
hold on

et ensuite tracé ce qui m'intéressait réellement. Ce premier point tracé est caché derrière les marques de la grille. assurez-vous simplement d'inclure

hold off

après votre dernière commande de traçage.

La solution simple consiste à créer un faux graphique et à définir sa couleur en blanc.

fake=100;
polar(0,fake,'w');
hold on;

real=10;
polar(0,real,'w');

Si quelqu'un d'autre le découvre, voici la solution:

Comme Scottie T et gnovice , Matlab utilise fondamentalement la fonction polaire comme interface de standard parcelles, mais avec beaucoup de formatage dans les coulisses pour le rendre polaire. Examinez les valeurs des propriétés XLim et YLim d'un graphe polaire et vous remarquerez qu'il s'agit littéralement des limites x et y de votre graphe en coordonnées cartésiennes. Donc, pour définir une limite de rayon, utilisez xlim et ylim, ou axis, et soyez intelligent en ce qui concerne les valeurs que vous définissez:

rlim = 10;
axis([-1 1 -1 1]*rlim);

... c'est tout ce qu'il y a à faire. Heureux Matlabbing:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top