无法为每个子图设置不同的颜色图

时间:2018-08-10 12:25:00

标签: matlab plot matlab-figure subplot colormap

我的代码中的颜色图函数应为3个子图提供3种不同的颜色图。自去年以来,我一直在使用polarmap颜色图来显示多普勒曲线。我刚刚发现它不再起作用了!现在,所有三个子图都在同一个颜色图中,这是第一个:“热”。

注意:最近我从2017年更新了我的MATLAB,直到2018年。我不确定是否会导致这种错误。

下面是我的代码:

% Intensity, Doppler, Line width
f2 = figure();
set(f2,'position', [0, 0, screenX, screenY])

sx1 = subplot(1,3,1);
imagesc(x,t,(meanxytint'))
set(gca,'YDir','normal')
colormap hot
colorbar
caxis([0 5000])

xlabel('Solar X','FontSize',14,'FontWeight','bold')
ylabel('Solar Y','FontSize',14,'FontWeight','bold')
title('Intensity (DN)', 'FontSize', 16);
ax = gca;
ax.XAxis.FontSize = 12;
ax.YAxis.FontSize = 12;

sx2 = subplot(1,3,2);
imagesc(x,t,meanxytdop')
set(gca,'YDir','normal')
colormap (sx2, flipud(polarmap(1024)))
colorbar
caxis([-100 100])

xlabel('Solar X','FontSize',14,'FontWeight','bold')
ylabel('Solar Y','FontSize',14,'FontWeight','bold')
title('Doppler Profile (km/s)', 'FontSize', 16);
ax = gca;
ax.XAxis.FontSize = 12;
ax.YAxis.FontSize = 12;

sx3 = subplot(1,3,3);
imagesc(x,t,meanxytwid')
set(gca,'YDir','normal')
colormap gray
colorbar
caxis([0 150])

xlabel('Solar X','FontSize',14,'FontWeight','bold')
ylabel('Solar Y','FontSize',14,'FontWeight','bold')
title('Non-thermal Cont. (km/s)', 'FontSize', 16);
ax = gca;
ax.XAxis.FontSize = 12;
ax.YAxis.FontSize = 12;

1 个答案:

答案 0 :(得分:1)

您的代码存在以下问题:

colormap gray

请注意,在前两个轴中,您使用轴手柄来设置颜色图,例如

colormap (sx2, flipud(polarmap(1024)))

来自documentation of colormap(重点是我):

  

colormap map将当前的颜色图设置为预定义的颜色图之一。如果为图形设置了颜色图,则图形中的轴和图表将使用相同的颜色图

修复很容易,只需使用与其他情况相同的语法即可:

colormap(sx3, gray);

其他一些注意事项:

  • 如果要最大限度地发挥身材,请

    f2 = figure('WindowState', 'maximized');
    
  • 在已经具有轴手柄(ax = gca)的情况下,无需执行sx1...3