2010-04-20 14 views
13

Tracé un solo rastro en MATLAB con plot(). Me gustaría agregar un eje yy con un conjunto diferente de marcas (escaladas linealmente). es posible?Diferentes ejes derecho e izquierdo en un diagrama de MATLAB?

+4

puede encontrar muchas soluciones en esta pregunta duplicado: http: // stackoverflow .com/questions/1719048/plotting-4-curves-in-a-single-plot-with-3-y-axes – gnovice

+1

... aunque, en retrospectiva, estoy un poco indeciso de llamarlo * exact * duplicar. Se trata de una situación más complicada, pero las soluciones siguen siendo aplicables (algunas necesitan un poco de modificación para adaptarse a su problema). – gnovice

Respuesta

16

Hay una serie de buenas sugerencias en this closely related question, aunque se ocupan de una situación más complicada que la tuya. Si desea una solución súper sencilla de bricolaje, puede intentar esto:

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 

Y esto es lo que debe conseguir: solución

enter image description here

1

Abra la ayuda de MATLAB con F1 y echar un vistazo a las funciones siguientes funcionan plot la que usted ha mencionado, allí verá plotyy. Esto es lo que probablemente necesites.

ACTUALIZACIÓN: en realidad plotyy NO es la respuesta a la pregunta señalada por gnovice.

+0

Gracias por esto, aunque me parece extraño que la trama realmente requiera que trace los datos dos veces para obtener el efecto deseado. – AndyL

+0

La función PLOTYY traza * dos * líneas, cada una con su propia escala y. Para obtener * una línea con dos escalas y * probablemente tendrías que hacer un par de cosas complicadas (como trazar dos líneas, escalar la segunda al rango deseado y luego hacerla invisible). – gnovice

2

de Jiro es buena (función de cambio de archivos), sin embargo, no permite utilizar las funciones de trazado integradas de Matlab (barra, dispersión, etc.), y en su lugar debe usar plot2ax. La propia ayuda de Matlab da la solución para tener dos ejes en cualquier tipo de trazados: ax2 = ejes ('Posición', get (ax1, 'Posición'), ... 'XAxisLocation', 'top', ... 'YAxisLocation', 'right', ... 'Color', 'ninguno', ... 'XColor', 'k', 'YColor', 'k');

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

+0

La página a la que se refiere ya no existe. – Fraukje

-1

yo era capaz de hacerlo con el siguiente después de trazar la gráfica eje izquierdo:

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

espero que ayude.

Cuestiones relacionadas