2015-09-14 4 views
0

Я использую панель инструментов отображения для создания контурного графика с contourfm()contourcbar() и caxis() для обозначения цвета. Каков наилучший способ добавить вторую ось к цветной панели, чтобы она выглядела примерно так?Matlab colorbar с двумя осями

A mock up of a two-axis colorbar

Если это имеет значение, я бегу Matlab v2014b на RHEL6 с -nodesktop и -nodisplay. Заранее спасибо!

Редактировать 1: Я использовал ответ Benoit_11, чтобы придумать пример кода, чтобы воспроизвести проблему. Подождите, пока график будет создан, затем измените размер окна фигуры. Вы увидите, что вторая ось цветной панели (левая сторона) не масштабируется должным образом с остальной частью графика. Любые советы, чтобы исправить это, будут очень признательны!

figure('Color','white') 
worldmap('north america') 
load topo 
R = georasterref('RasterSize',[180 360], 'Latlim',[0 80],'Lonlim',[-160 -50]); 

contourfm(topo, R, -7000:1000:3000) 
caxis([-8000 4000]) 


hBar1 = contourcbar 
contourcmap('jet') 
caxis([1 10]) 
BarPos = get(hBar1,'position'); 
ylabel(hBar1,'Total electron content','FontSize',12); 
haxes = axes('position',BarPos,'color','none','ytick',0:5:15,'ylim',[0 
15],'xtick',[]); 
ylabel('Approximate position error','FontSize',12) 

ответ

1

Вы можете создать 2-ой оси с той же позиции, что и 1-й Colorbar и установите его ylabel свойство в названии вы хотите плюс ytick собственность на то, что вам нужно.

пустышки пример:

%// Create colorbar 
hBar1 = colorbar; 

%// Set its ylabel property 
ylabel(hBar1,'Total electron content','FontSize',12); 

%// Get its position 
BarPos = get(hBar1,'position'); 

%// Create an axes at the same position 
haxes = axes('position',BarPos,'color','none','ytick',0:5:15,'ylim',[0 
15],'xtick',[]); 

%// Set its ylabel property 
ylabel('Approximate position error','FontSize',12) 

выход (обрезанные):

enter image description here

Вам просто нужно выяснить правильное размещение Colorbar так, чтобы она не пересекалась с осями, содержащие ваши сюжеты. Обратите внимание, что черная линия внизу слева происходит из пустых осей, поэтому ее не будет в вашем случае.

Надеюсь, что это поможет!

+0

Спасибо! Пример вашего фиктивного примера дает именно то, что я ищу, но когда я попытался использовать 'axes()' с позицией colorbar в контексте с остальной частью моего кода, масштабирование двух осей не соответствует ("Approximate Position Ошибка "выше, чем цветная панель, а другая ось). У меня такое чувство, что может быть, потому что я использую 'contourcbar' для создания colorbar. Я вложу картинку в исходное сообщение. Еще раз спасибо! – GPSmaster

+0

Я понял, что проблема с масштабированием вторых осей вызвана изменением размера окна фигуры. Вторая ось неправильно масштабируется с остальной частью графика. См. Мой пример кода в «Редактировать 1». В моем коде я использую 'print' для прагматического сохранения изображения с помощью специального разрешения (с опцией' -r'), но повторная калибровка окна рисунка также демонстрирует проблему масштабирования. – GPSmaster

Смежные вопросы