2010-04-20 9 views
13

Je trace une seule trace dans MATLAB avec plot(). Je voudrais ajouter un axe y-droit avec un ensemble différent de graduations (mises à l'échelle linéairement). Est-ce possible?Différents axes droite et gauche dans un graphe MATLAB?

+4

Vous pouvez trouver de nombreuses solutions sur cette question en double: http: // stackoverflow .com/questions/1719048/tracer-4-courbes-dans-un-plot-avec-3-y-axes – gnovice

+1

... bien, rétrospectivement, je suis un peu hésitant à l'appeler un * exact * dupliquer. Il s'agit d'une situation plus compliquée, mais les solutions y sont toujours applicables (certaines ont besoin d'un peu de modification pour s'adapter à votre problème). – gnovice

Répondre

16

Il y a un certain nombre de bonnes suggestions sur this closely related question, bien qu'elles traitent d'une situation plus compliquée que la vôtre. Si vous voulez une solution DIY super-simple, vous pouvez essayer ceci:

plot(rand(1, 10));  % Plot some random data 
ylabel(gca, 'scale 1'); % Add a label to the left y axis 
set(gca, 'Box', 'off'); % Turn off the box surrounding the whole axes 
axesPosition = get(gca, 'Position');   % Get the current axes position 
hNewAxes = axes('Position', axesPosition, ... % Place a new axes on top... 
       'Color', 'none', ...   % ... with no background color 
       'YLim', [0 10], ...   % ... and a different scale 
       'YAxisLocation', 'right', ... % ... located on the right 
       'XTick', [], ...    % ... with no x tick marks 
       'Box', 'off');     % ... and no surrounding box 
ylabel(hNewAxes, 'scale 2'); % Add a label to the right y axis 

Et voici ce que vous devriez obtenir:

enter image description here

1

Aide Ouvrir Matlab F1 et regarder les fonctions ci-dessous fonction plot que vous avez mentionné, vous y verrez plotyy. C'est ce dont vous avez probablement besoin.

MISE À JOUR: réellement plotyy n'est pas la réponse à la question comme indiqué par gnovice.

+0

Merci pour cela, même si je trouve bizarre que l'intrigue vous oblige réellement à tracer les données deux fois pour obtenir l'effet désiré. – AndyL

+0

La fonction PLOTYY trace les * deux * lignes, chacune avec sa propre échelle y. Pour obtenir * une ligne avec deux échelles * vous devrez probablement faire quelques trucs compliqués (comme traçage de deux lignes, mise à l'échelle du second à la gamme désirée, puis rendu invisible). – gnovice

2

solution de Jiro est bonne (fichier fonction Exchange), cependant, il ne permet pas d'utiliser les fonctions de tracé de Matlab (barre, dispersion, etc.), et vous devez utiliser plot2axes à la place. L'aide de Matlab donne la solution d'avoir deux axes sur n'importe quel type de parcelle: ax2 = axes ('Position', get (ax1, 'Position'), ... 'XAxisLocation', 'top', ... 'YAxisLocation', 'right', ... 'Couleur', 'aucun', ... 'XColor', 'k', 'YColor', 'k');

Regardez: http://www.mathworks.com/help/techdoc/creating_plots/f1-11215.html

+0

La page dont vous parlez n'existe plus. – Fraukje

-1

j'ai pu le faire avec ce qui suit après avoir tracé le graphe de l'axe gauche:

yyaxis right 
ylabel('Right axis label') 
plot(x,y1) % plot your right axis graph 

Hope it helps.

Questions connexes