Możesz zrobić coś takiego. W porównaniu do rozwiązania @ Benoit_11 używam normalnych etykiet Matlab i odnoszą się do obu osi z uchwytami, więc przypisania są wyraźne.
Następujący kod tworzy pustą oś x b
z jednostkami m/s z nieznaczną wysokość. Następnie rzeczywisty wykres jest narysowany w drugiej osi a
położonej nieco ponad innymi osiami i jednostkami km/h. Aby drukować na określonych osiach, wstaw uchwyt osi jako pierwszy argument stem
. Konwersja z m/s na km/h jest bezpośrednio zapisana w wywołaniu do stem
. Wreszcie, konieczne jest ustawienie wartości dwóch osi na tej samej wartości.
% 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');
Jeśli można żyć z drugiej osi x na górze, a potem po prostu zastosować [** to rozwiązanie **] (http://stackoverflow.com/a/30692952/2605073) i zastępować wszystkie y zx. Jeśli * naprawdę * chcesz obydwu razem na dole, muszę Cię rozczarować, to będzie prawdziwy ból w dupie, aby zbliżyć się do akceptowalnego stylu.Polecam, skorzystaj z połączonego rozwiązania i po prostu przesuń w dół najwyższą osią w przetwarzaniu końcowym za pomocą programu inkscape, Illustrator itp. Oszczędzasz sobie wielu kłopotów. – thewaywewalk