仅更改底部xaxis的颜色

时间:2017-08-29 13:38:34

标签: matlab plot matlab-figure

我想将图表的底部x轴更改为蓝色,同时将其他三面保持黑色。是否有一种简单的方法可以做到这一点,我不知道?

2 个答案:

答案 0 :(得分:4)

您可以通过访问某些undocumented features在较新版本的MATLAB中执行此操作。具体而言,您希望访问轴的Axle属性的MajorTickChildLineStrip属性(两者都存储XRuler个对象)。然后,您可以使用ColorBinding属性修改ColorDataVertexData属性:

XColor = [0 0 1];                             % RGB triple for blue
hAxes = axes('Box', 'on', 'XColor', XColor);  % Create axes
drawnow;                                      % Give all the objects time to be created
hLines = hAxes.XRuler.Axle;                   % Get the x-axis lines
nLinePts = size(hLines.VertexData, 2)./2;     % Number of line vertices per side
hTicks = hAxes.XRuler.MajorTickChild;         % Get the x-axis ticks
nTickPts = size(hTicks.VertexData, 2)./2;     % Number of tick vertices per side
set(hLines, 'ColorBinding', 'interpolated', ...
            'ColorData', repelem(uint8([255.*XColor 255; 0 0 0 255].'), 1, nLinePts));
set(hTicks, 'ColorBinding', 'interpolated', ...
            'ColorData', repelem(uint8([255.*XColor 255; 0 0 0 255].'), 1, nTickPts));

以下是情节:

enter image description here

注意:这应该是更新绘图的最后一步。调整轴或对轴进行其他更改(特别是任何更改x轴刻度标记的内容)可能会发出警告而无法正确渲染,因为上面的设置已手动更改,因此在其他操作时不会自动更新。将其他属性设置为'manual'可能有助于避免这种情况,例如XTickModeXTickLabelMode

答案 1 :(得分:2)

可能的解决方法是将空轴放在顶部并隐藏其刻度。

示例:

%Some random plot
x = 0:0.1:4*pi;
y = cos(x);
plot(x,y);

%Adjustments
ax1 = gca;                %Current axes
%Now changing x-axis color to blue
set(ax1,'XColor','b');    %or ax1.XColor='b' for  >=R2014b 
ax2=axes('Position',get(ax1,'Position'),... %or ax1.Position for >=R2014b
    'XAxisLocation','top','YAxisLocation','right','Color','none',...
    'XTickLabels',[] ,'YTickLabels',[],...
     'XTick', get(ax1,'XTick'));  %or ax1.XTick for >=R2014b
linkaxes([ax1 ax2]);      %for zooming and panning

output

警告:这会将XTickLabels的模式从auto更改为manual,因此任何缩放/平移都不会自动更新刻度颜色。