Grid overlay on "plots()"
134 ビュー (過去 30 日間)
古いコメントを表示
Can you overlay a grid on "plots()" in the same way "imagesc()" allows you to overaly a grid on an image?
0 件のコメント
回答 (2 件)
Adam Danz
2020 年 1 月 15 日
編集済み: Adam Danz
2020 年 1 月 15 日
Here are two ways of adding a grid to a plot.
Use the grid function
To adjust the spacing of grid lines, change the major and minor axis ticks for each axis.
% Produce plot
cla()
ax = gca();
plot(ax, rand(1,200),rand(1,200),'bo','MarkerfaceColor','b')
% Set major tick marks and grid lines
grid(ax, 'on')
set(ax,'XTick',0:0.2:1,'YTick',0:0.2:1)
% Set minor tick marks and grid lines
grid(ax,'Minor')
set(ax.XAxis,'MinorTick','On','MinorTickValues',0:0.1:1)
set(ax.YAxis,'MinorTick','On','MinorTickValues',0:0.1:1)
Set grid properties (here's a full list). By default the grid is under the plotted data. The line below puts the grid on top, sets the color to red and the minor grid lines to violet.
set(gca,'Layer','top','GridColor','r','GridAlpha',1,...
'MinorGridLineStyle','-','MinorGridColor',[.92 .51 .93],'MinorGridAlpha',1)
Use xline and yline functions
Alternatively, you can use the xline and yline functions to create a grid that is independent of the axis ticks. Since neither of those function accept non-scalar inputs, they must be wrapped in an array function.
% Produce plot
cla()
ax = gca();
plot(ax, rand(1,200),rand(1,200),'bo','MarkerfaceColor','b')
% Define x and y grid
xgrid = 0:0.2:1;
ygrid = 0:0.2:1;
% plot grid lines with red lines and a width of 2
xl = arrayfun(@(x)xline(x,'r-','LineWidth',2),xgrid);
yl = arrayfun(@(y)yline(y,'r-','LineWidth',2),ygrid);
xline and yline produce constantLine objects. Here's a list of their properties. xl and yl will be an array of these objects, one element per line. Here's a demo how to make changes to their properties after plotting.
set(xl, 'LineWidth', 1, 'Alpha', 1)
set(yl, 'LineWidth', 1, 'Alpha', 1)
2 件のコメント
Adam Danz
2020 年 1 月 15 日
That's much different from what's asked in your original question.
I understand your description that imagesc(x,y,C) plots the colors C at the coordinates of (x,y). That doesn't necessarily mean x and y form a grid. They are just coordinates on the axes.
Are you trying to do the same by using a scatter plot? I'm not clear on what the goal is.
Check out this scatter plot example where (x,y) coordinates specify the location of colored points.
参考
カテゴリ
Help Center および File Exchange で Scatter Plots についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!