Add y grid only to plot
Mostrar comentarios más antiguos
I would like to add solid y grid lines to my plot according to the y tick in gca.
so I tried:
ax = gca;
ax.YGrid = 'on';
ax.GridLineStyle = '-';
However, this did not work and there is no grid at all in my plot, please help.
13 comentarios
Adam
el 12 de Jul. de 2016
This shows a grid when I try it. Are you sure you have YTick marks defined?
The grid shows grey, but you can change its colour and other properties to make it stand out more
chlor thanks
el 12 de Jul. de 2016
Editada: chlor thanks
el 12 de Jul. de 2016
dpb
el 12 de Jul. de 2016
What does
ylim
return? Sounds like you've got the grid values outside those of the axes y limits.
If that doesn't answer the question, give us a complete sample that causes the problem we can run w/o making anything up for comparison.
chlor thanks
el 12 de Jul. de 2016
Editada: chlor thanks
el 14 de Jul. de 2016
Adam
el 13 de Jul. de 2016
I doubt it will solve this problem as I'm sure your instructions are being applied to the correct axes anyway, but I would suggest re-arranging your code above as follows (untested, just off the top of my head, but I think it should work).
That is, get the axes handle straight away (I do this on the same line as creating a figure to ensure that focus does not change between creation of the figure and the axes) and store it, then use the explicit axes handle for further instructions instead of keep using gca which is subject to the whims of whatever axes in focus if other figures exist and get clicked on etc, especially if you break in the code with a breakpoint between instructions:
figure(1); ax = gca;
plot(ax, x, data, 's-')
legend(ax, lgnd, 'Location','SE')
set(ax, 'XTick', x, 'XTickLabel',xtlbl, 'YTick',[2 4])
ylim(ax, [0 9])
ax.YGrid = 'on';
ax.GridLineStyle = '-';
chlor thanks
el 13 de Jul. de 2016
Editada: chlor thanks
el 14 de Jul. de 2016
dpb
el 13 de Jul. de 2016
Attach the figure you get from the above code so we can see what it is that you're actually complaining about.
What happens if you simply do
plot(randn(5,1))
gca.YGrid='on';
? Also attach the results of the above.
chlor thanks
el 14 de Jul. de 2016
Editada: chlor thanks
el 14 de Jul. de 2016
chlor thanks
el 14 de Jul. de 2016
Adam
el 14 de Jul. de 2016
plot(randn(5,1))
gca.YGrid='on';
is not valid syntax to do this. You are actually creating a struct called 'gca' in that scenario. gca does not support the new class notation so you would have to use:
plot(randn(5,1))
set( gca, 'YGrid', 'on' );
but that won't change your original code where you do don't do this anyway.
chlor thanks
el 14 de Jul. de 2016
dpb
el 14 de Jul. de 2016
"gca.YGrid='on';is not valid syntax to do this."
I debated about that; not having HG2 wasn't able to check; I (unfortunately) let the previous posting influence in making an unwarranted assumption so left it instead of using the old set notation trying to "get with it" for the new stuff... :(
At least finally uncovered the issue; as I suspected it wasn't profound.
chlor thanks
el 14 de Jul. de 2016
Respuesta aceptada
Más respuestas (1)
Valerii Abramenko
el 23 de Jul. de 2019
22 votos
Hello,
If someone else needs the grid for only one axis, the answer is here (set(gca, 'YGrid', 'on', 'XGrid', 'off')):
3 comentarios
Ata Chizari
el 12 de En. de 2024
Thanks, I needed it.
Klont
el 9 de Feb. de 2024
What about minor gridlines for only one axis?
grid(gca,'minor')
displays them for both X and Y, ignoring
set(gca,'XGrid','on','YGrid','off')
set(gca, 'XMinorGrid', 'on', 'YMinorGrid', 'off')
Categorías
Más información sobre Axis Labels en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


