2016-05-13 174 views
0

我完全擱淺了!Matlab:2個非連續的顏色條和colormaps在同一個圖中

任何人都可以幫我解決這個問題嗎?提前致謝。

  1. 我想什麼:我想繪製大腦網絡,使得節點都有自己的顏色表(噴氣)和彩條,並在同一圖中,用自己的顏色表(灰色)和彩條的鏈接。

  2. 問題:當我在屏幕上顯示來自兩個不同顏色映射的兩個顏色條的頭時,兩個顏色條都會在我的代碼中顯示第一個聲明的顏色映射(噴射)。換句話說,第一個聲明的colormap(jet)似乎重寫了最後聲明的colormaps(灰色)。顯示的數字顯示第一個顏色映射(噴氣機),從不顯示獨立的顏色條灰色!

  3. 我做了什麼?:我通過這些論壇遵循如此多的鏈接,並且數學工具有助於構建我自己的腳本。我在Matlab中很天真,我在使用matlab版本R2013a的macOS中使用它。代碼如下所示:

    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. 數字。下圖顯示了這個問題,這是當我運行我的代碼時得到的結果 enter image description here 正如您所看到的,即使兩個顏色條都具有與data1和data2相關的正確限制,第二個(最右邊的一個)是用colormap噴繪。 下圖顯示了我在尋找的內容: enter image description here 很明顯,這是在其他軟件中編輯以獲得第二個顏色條的顏色映射表灰色。

話雖如此,任何人都可以幫助我嗎?如果重要,我可以發送完整的代碼和4個文件運行並獲取錯誤的數字! 在此先感謝傢伙,我感謝你的所有幫助。 Gohann, Gohann。

回答

1

最後我得到了我的答案,因爲Ratbert的評論和來自Matlab®文件交換的許多人的作品。感謝腳本freezeColors.m和cbfreeze.m以及John Inversen和David Legland Carlos Adrian vargas的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 

功能/ toolKit Easy Plot腦電圖Brain Network現已在GitHub和Matlab Fileexchange中提供。 [email protected] FileExchange GitHub Reposiroty 感謝大家。

相關問題