2010-04-20 2 views
13

Ich zeichne eine einzelne Spur in MATLAB mit plot(). Ich möchte eine rechte y-Achse mit einem anderen Satz von Häkchen (linear skaliert) hinzufügen. Ist das möglich?Verschiedene rechte und linke Achsen in einem MATLAB-Plot?

+4

Sie können viele Lösungen auf dieser doppelten Frage finden: http: // Stackoverflow .com/questions/1719048/plotten-4-Kurven-in-einem-Plot-mit-3-y-Achsen – gnovice

+1

... obwohl ich im Nachhinein ein wenig zögerlich bin, es ein * genau * zu nennen Duplikat. Es geht um eine kompliziertere Situation, aber die Lösungen dort sind immer noch anwendbar (einige benötigen ein bisschen Modifikation, um zu Ihrem Problem zu passen). – gnovice

Antwort

16

Es gibt eine Reihe guter Vorschläge zu this closely related question, obwohl sie sich mit einer komplizierteren Situation befassen als Ihre. Wenn Sie eine super-einfache DIY-Lösung möchten, können Sie dies versuchen:

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 

Und hier ist, was sollten Sie:

enter image description here

1

öffnen MATLAB-Hilfe mit F1 und werfen Sie einen Blick auf die folgenden Funktionen Funktion plot, die Sie erwähnt haben, wird es Sie plotyy sehen. Das ist es, was Sie wahrscheinlich brauchen.

UPDATE: eigentlich plotyy ist nicht die Antwort auf die Frage, wie von gnovice.

+0

Danke dafür, obwohl ich finde es komisch, dass Plotyy tatsächlich erfordert, dass Sie die Daten zweimal plotten, um den gewünschten Effekt zu erzielen. – AndyL

+0

Die PLOTYY-Funktion zeichnet * zwei * Linien mit jeweils einer eigenen y-Skala. Um * eine Zeile mit zwei y-Skalen * zu erhalten, müßtest du wahrscheinlich ein paar knifflige Dinge tun (z. B. zwei Linien zeichnen, die zweite auf den gewünschten Bereich skalieren und dann unsichtbar machen). – gnovice

2

Jiros Lösung gut ist (Dateiaustausch-Funktion), jedoch Es erlaubt nicht, die integrierten Plot-Funktionen von Matlab (Balken, Streuung usw.) zu verwenden, und stattdessen müssen plot2axes verwendet werden. Matlabs eigene Hilfe gibt die Lösung, zwei Achsen auf jeder Art von Plots zu haben: ax2 = Achsen ('Position', get (ax1, 'Position'), ... 'XAxisLocation', 'top', ... 'YAxisLocation', 'right', ... 'Farbe', 'keine', ... 'XColor', 'k', 'YColor', 'k');

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

+0

Die Seite, auf die Sie sich beziehen, existiert nicht mehr. – Fraukje

-1

Ich konnte es mit dem folgenden tun, nachdem die linke Achse Graph:

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

Hoffe, es hilft.