我想将图表的底部x轴更改为蓝色,同时将其他三面保持黑色。是否有一种简单的方法可以做到这一点,我不知道?
答案 0 :(得分:4)
您可以通过访问某些undocumented features在较新版本的MATLAB中执行此操作。具体而言,您希望访问轴的Axle
属性的MajorTickChild
和LineStrip
属性(两者都存储XRuler
个对象)。然后,您可以使用ColorBinding
属性修改ColorData
和VertexData
属性:
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));
以下是情节:
注意:这应该是更新绘图的最后一步。调整轴或对轴进行其他更改(特别是任何更改x轴刻度标记的内容)可能会发出警告而无法正确渲染,因为上面的设置已手动更改,因此在其他操作时不会自动更新。将其他属性设置为'manual'
可能有助于避免这种情况,例如XTickMode
和XTickLabelMode
。
答案 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
警告:这会将XTickLabels
的模式从auto
更改为manual
,因此任何缩放/平移都不会自动更新刻度颜色。