xlabel ejemplo comando achsenbeschriftung matlab plot matlab-figure axis-labels

ejemplo - Cómo insertar dos ejes X en un diagrama de Matlab



title matlab (3)

Me gustaría crear una figura de Matlab con un doble eje X (m / s y km / h) con la misma gráfica.

He encontrado una trama y, en Matlab reposity, tramay, pero estoy buscando:

  1. Un doble eje X.
  2. Juntos debajo de la trama.

Mi código es muy simple:

stem(M(:, 1) .* 3.6, M(:, 3)); grid on xlabel(''Speed (km/h)''); ylabel(''Samples'');

M(:, 1) es la velocidad (en m / s), y M(:, 3) son los datos.

Solo me gustaría una segunda línea, en la parte inferior, con las velocidades en m / s.


Como alternativa muy simple, también podría crear un 2 ° eje (transparente) y colocarlo debajo del primero para que solo vea el eje x.

Ejemplo:

clear clc close all x = 1:10; x2 = x/3.6; y = rand(size(x)); hP1 = plot(x,y); a1Pos = get(gca,''Position''); %// Place axis 2 below the 1st. ax2 = axes(''Position'',[a1Pos(1) a1Pos(2)-.05 a1Pos(3) a1Pos(4)],''Color'',''none'',''YTick'',[],''YTickLabel'',[]); %// Adjust limits xlim([min(x2(:)) max(x2(:))]) text(2.85,0 ,''m/s'',''FontSize'',14,''Color'',''r'') text(2.85,.05 ,''km/h'',''FontSize'',14,''Color'',''r'')

Salida:

Luego puede agregar manualmente las etiquetas x para cada unidad, en diferentes colores, por ejemplo.


Lo mejor que puedo hacer es usar 2 trazados, por ejemplo, puedes dividir la trama en una sección grande y pequeña haciendo algo como esto:

subplot(100, 1, 1:99) // plot your graph as you normally would plot(... subplot(100, 1, 100) // Plot a really small plot to get the axis plot(...) b = axis() axis([b(1:2), 0, 0]) // set the y axis to really small

Esto no se ha probado, es posible que tenga que juguetear un poco, pero con suerte debería ponerlo en el camino correcto.


Puedes hacer algo como lo siguiente. En comparación con la solución de @ Benoit_11 , utilizo las etiquetas normales de Matlab y me refiero a ambos ejes con asas para que las asignaciones sean explícitas.

El siguiente código crea un eje x b vacío con las unidades m / s con una altura despreciable. Después de esto, la trama real se dibuja en un segundo eje ubicado un poco por encima de los otros ejes y con unidades km / h . Para trazar sobre un eje específico, inserte el mango de los ejes como primer argumento de stem . La conversión de m / s a km / h se escribe directamente en el llamado a stem . Finalmente, es necesario establecer la xlim xlim de ambos ejes con los mismos valores.

% experimental data M(:,1) = [ 0, 1, 2, 3, 4, 5]; M(:,3) = [12, 10, 15, 12, 11, 13]; % get bounds xmaxa = max(M(:,1))*3.6; % km/h xmaxb = max(M(:,1)); % m/s figure; % axis for m/s b=axes(''Position'',[.1 .1 .8 1e-12]); set(b,''Units'',''normalized''); set(b,''Color'',''none''); % axis for km/h with stem-plot a=axes(''Position'',[.1 .2 .8 .7]); set(a,''Units'',''normalized''); stem(a,M(:,1).*3.6, M(:,3)); % set limits and labels set(a,''xlim'',[0 xmaxa]); set(b,''xlim'',[0 xmaxb]); xlabel(a,''Speed (km/h)'') xlabel(b,''Speed (m/s)'') ylabel(a,''Samples''); title(a,''Double x-axis plot'');