Matlab: 2 непрерывных цветных полосы и карты цветов на одном рисунке.

Я совсем запутался!!!

Может ли кто-нибудь помочь мне с этой проблемой? Заранее спасибо.

  1. Что я хотел: я хочу построить мозговую сеть таким образом, чтобы узлы имели свою собственную цветовую карту (струйный) и цветовую шкалу, а на том же рисунке - связи со своей собственной цветовой картой (серый) и цветовой шкалой.

  2. Проблема: когда я отображаю на экране голову с двумя цветовыми полосами из двух разных цветовых карт, обе цветные полосы отображаются с первой объявленной цветовой картой (jet) в моем коде. Другими словами, кажется, что первая объявленная карта цветов (jet) перезаписывает последние объявленные карты цветов (серые). На показанном рисунке показана первая цветовая карта (струя) и никогда не показана независимая серая цветовая полоса!!!

  3. Что я сделал?: Я перешел по множеству ссылок на этих форумах, и mathworks помогает мне создать свой собственный сценарий. Я наивен в Matlab и использую его в macOS с версией Matlab R2013a. Код выглядит следующим образом:

    Figure
    hold
    plot1 with data1 associated to colormap(gray)
    plot2 with data2 associated to colormap(jet)
    
    axis square
    axis off
    box off
    set(gca,'XTick',[],'YTick',[])
    set(gcf, 'units','normalized','outerposition',[0 0 1 1]) %EXPANDING FIGURE ON SCREEN
    
    ax1 = gca;   %GETTING THE AXES OF THE FORMER FIGURE
    ax1p = get(ax1,'Position');
    
    colormap(ax1,'jet')   %colorbar for nodes
    cb1 = colorbar('west');
    set(cb1, 'Position', [ax1p(1)+ax1p(3)-0.17  ax1p(2)+0.17  0.03          ax1p(2)+ax1p(3)-.3])
    set(cb1, 'fontsize', 30);
    caxis([min(n_atribut) max(n_atribut)]);
    
    ax2 = axes;        %getting axes for second colorbar
    set(ax2, 'Position', ax1p);     % Co-locate ax2 atop ax1
    ax2p = get(ax2, 'Position');
    axis off;                       % Make ax2 invisible 
    linkaxes([ax1,ax2],'xy');       % Link ax1 and ax2 so zooming will work properly: 
    
    colormap(ax2,'gray')  %colorbar for links
    cb2 = colorbar('west'); % Create a new colorbar
    set(cb2, 'Position', [ax2p(1)+ax2p(2)+0.6  ax2p(2)+0.17  0.03          ax2p(2)+ax2p(3)-.3])
    set(cb2, 'fontsize', 30);
    caxis([min(w_atribut) max(w_atribut)]);
    axes(ax2);
    hold off
    
  4. Цифры. На рисунке ниже показана проблема, и это то, что я получаю, когда запускаю свой код введите здесь описание изображения Как видите, даже когда обе цветные полосы имеют свои надлежащие ограничения, связанные с данными1 и данными2, вторая (тот, что крайний справа) построен с помощью струи цветовой карты. На следующем рисунке показано, что я ищу: введите описание изображения здесь Очевидно, это изображение было отредактировано в другом программном обеспечении, чтобы получить серый цвет второй полосы цветов.

Сказав это, может ли кто-нибудь помочь мне, пожалуйста? Если это важно, я могу отправить полный код и 4 файла для запуска и получить неправильную цифру! Заранее спасибо, ребята, я ценю всю вашу помощь. Гоханн.


person Gohann    schedule 13.05.2016    source источник


Ответы (2)



Наконец, я получил свой ответ благодаря комментарию Ратберта и работе очень многих ребят из файлового обмена Matlab®. Благодарю за скрипты freezeColors.m и cbfreeze.m и double2rgb.m Джона Инверсена и Дэвида Легланда Карлоса Адриана Варгаса. Вот как я решил проблему.

% % % % NODOS
cm1 = colormap(jet);
cb1 = colorbar('Location', 'east', 'fontsize', 30);
caxis([min(n_atribut(n_atribut>0)) max(n_atribut)])
cbfreeze(cm1)
freezeColors(ax1)
% % % % LINKS
cm2 = colormap(bone);
cm2 = flipud(cm2);
colormap(cm2);
cb2 = colorbar('Location', 'west', 'fontsize', 30);
caxis([min(w_atribut) max(w_atribut)])
cbfreeze(cm2)
freezeColors

Функция/инструментарий Easy Plot EEG Brain Network теперь доступна в GitHub и Matlab Fileexchange. Matlab@ FileExchange Репозиторий GitHub Спасибо всем.

person Gohann    schedule 27.05.2016