How can I change the gridline color without changing the tick and tick label colors in MATLAB?

487 Ansichten (letzte 30 Tage)
When I execute the following lines of code:
h= plot(rand(1, 100));
grid on
set(gca, 'XColor', 'r')
the color of the X-axis gridlines, X tick-marks and X tick-labels all become red.
I would like to selectively change the color of the gridlines alone, without changing the color of the X tick-marks and X tick-labels.

Akzeptierte Antwort

MathWorks Support Team
MathWorks Support Team am 22 Jul. 2020
Bearbeitet: MathWorks Support Team am 22 Jul. 2020
The gridline color cannot be changed without affecting the tick-mark and tick-label colors in MATLAB prior to R2014b .
*In MATLAB R2014a and prior *you can work around this issue by plotting lines of the desired color on top of your figure using PLOT. The following example demostrates this approach:
h= plot(rand(1, 100));
hold on
grid on
% Obtain the tick mark locations
xtick = get(gca,'XTick');
% Obtain the limits of the y axis
ylim = get(gca,'Ylim');
% Create line data
X = repmat(xtick,2,1);
Y = repmat(ylim',1,size(xtick,2));
% Plot line data
plot(X,Y,'r')
After executing the above code, the color of the X-axis gridlines remain red, whereas the X tick-marks and X tick-labels are black.
In MATLAB R2014b and later you can set the 'GridColor' property of the axes to a desired value:
grid on
ax = gca;
ax.GridColor = [0.1, 0.1, 0.1]; % [R, G, B]
Please refer to the following documentation link:

Weitere Antworten (3)

Image Analyst
Image Analyst am 13 Aug. 2016
To do it in R2014b and later, try this:
y = sin([1:40]/10);
plot(y, 'm*-');
grid on;
ax = gca % Get handle to current axes.
ax.XColor = 'r'; % Red
ax.YColor = 'b'; % Blue
ax.GridAlpha = 0.9; % Make grid lines less transparent.
ax.GridColor = [0.1, 0.7, 0.2]; % Dark Green.

Jos (10584)
Jos (10584) am 26 Feb. 2014
Bearbeitet: MathWorks Support Team am 15 Mai 2023
People might be interested in creating their own grid using my GRIDXY(https://www.mathworks.com/matlabcentral/fileexchange/9973-gridxy) function I submitted many years ago to the File Exchange. An example:
gridxy(get(gca,'xtick'),get(gca,'ytick'),'color',[.6 .6 .6],'linewidth',1)

Wagih Abu Rowin
Wagih Abu Rowin am 17 Aug. 2016
ax = gca; ax.GridLineStyle = '--'; ax.GridColor = [0.1, 0.1, 0.1]; grid on

Produkte


Version

R2014a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by