Matlab:同一图中的2个非连续色条和色彩图

时间:2016-05-13 17:54:22

标签: matlab axes colorbar colormap

我完全陷入困境!!!

有谁能帮我解决这个问题?提前谢谢。

  1. 我想要的是:我想绘制一个大脑网络,使得节点有自己的色彩图(jet)和colorbar,在同一图中,链接有自己的色彩图(灰色)和色条。

  2. 问题:当我在屏幕上显示来自两个不同颜色图的两个颜色条的头部时,两个颜色条在我的代码中显示第一个声明的颜色图(喷射)。换句话说,似乎第一个声明的colormap(jet)重写了最后声明的colormaps(灰色)。显示的图显示了第一个colormap(jet),从不显示独立的colorbar gray!

  3. 我做了什么?:我通过这些论坛关注了很多链接,数学工作有助于构建我自己的脚本。我在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. 图。下图显示了问题,这是我运行代码时得到的结果 enter image description here 如您所见,即使两个颜色条都有与data1和data2相关的适当限制,第二个(最右边的一个)也会用colormap jet绘制。 下图显示了我要找的内容: enter image description here 显然,这个是在其他软件中编辑的,以获得第二个颜色条的灰色图。

  5. 话虽如此,有人可以帮助我吗?如果它很重要,我可以发送完整的代码和4个文件来运行并得到错误的数字! 在此先感谢你们,我感谢你们所有的帮助。 Gohann。

2 个答案:

答案 0 :(得分:2)

您可能正在寻找freezecolor功能。

答案 1 :(得分:1)

最后,由于Ratbert的评论以及来自Matlab®文件交换的许多人的作品,我得到了答案。感谢John Inversen和David Legland Carlos Adrian vargas的脚本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

功能/ toolKit Easy Plot EEG脑网现在可以在GitHub和Matlab Fileexchange中使用。 Matlab@ FileExchange GitHub Reposiroty 谢谢大家。