2017-08-29 153 views
3

我想將圖形的底部x軸更改爲藍色,同時保持其他三面都是黑色。是否有一種簡單的方法可以做到這一點,但我不知道?僅更改底部x軸的顏色

回答

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

警告:這改變的XTickLabelsautomanual模式並且因此任何縮放/平移不會自動更新刻度顏色。

+0

謝謝@SardarUsama我會給這個去。 –

4

你可以通過訪問一些undocumented features在較新版本的MATLAB中做到這一點。具體而言,要訪問軸的XRuler屬性的AxleMajorTickChild屬性(均存儲LineStrip對象)。然後,你可以修改ColorBindingColorData性能,使用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)); 

而這裏的情節:

enter image description here

注:這項工作應作爲最後的步驟更新情節。調整軸大小或進行其他更改(特別是任何改變X軸刻度標記的內容)可能會引發警告並且無法正確呈現,因爲上述設置已手動更改,因此在其他情況下不會自動更新。將其他屬性設置爲'manual'可能有助於避免此問題,例如XTickModeXTickLabelMode

+0

非常感謝!看起來有點混亂,所以我會做你的話,並將其作爲最後一步。 –