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?
Antwort
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:
Sie können diese Einreichung an MATLAB File Exchange versuchen - PLOT2AXES.
PLOT2AXES example http://www.mathworks.com/matlabcentral/fx_files/7426/2/plot2axes.png
ö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.
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
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
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
Die Seite, auf die Sie sich beziehen, existiert nicht mehr. – Fraukje
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.
Von Matlab 2016 und weiter gibt es eine Option auf definieren, was eine Grund Achse:
yyaxis left
plots...
yyaxis right
plots...
Quelle: https://se.mathworks.com/help/matlab/ref/yyaxis.html
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
... 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