如何在Matlab中绘制不同间距的网格线

时间:2017-01-13 14:53:38

标签: matlab matlab-figure

在mathworks上,我找到了一个代码,用于在绘图中绘制网格线:

g_x = -25:1.25:0;
g_y = -35:2.5:-5;
for i = 1:length(g_x)
    plot([g_x(i) g_x(i)],[g_y(1) g_y(end)],'k:')% y grid lines
    hold on
end
for i=1:length(g_y)
    plot([g_x(1) g_x(end)],[g_y(i) g_y(i)],'k:') % x grid lines
    hold on    
end

here's a link

我不明白情节命令:例如y网格线 - 其中一个输入是一个包含x轴所有间距点的向量,我想要一个网格。这些点以两列给出,并且它们被分配给第二个向量,该向量仅包含y轴上显示的第一个和最后一个点。据我了解这个命令,它将例如取第一个元素g_x(1)和g_y(1)并绘制a:,然后它将采用g_x(2)和g_y(1)并绘制:,依此类推。但它如何继续绘制:从g_y(1)连续到g-y(结束)?

2 个答案:

答案 0 :(得分:1)

要直接回答您的问题,只需绘制每个网格线的两个端点,并且由于LineStyle使用的默认plot是实线,它们会自动生成连接。该代码正在做的是创建端点的所有排列并绘制这些排列以形成网格。

您可以简单地使用次要网格线并修改locations of the minor tick marks of the axes,而不是创建自定义绘图对象(如果您使用R2015b或更高版本)。

g_x = -25:1.25:0;
g_y = -35:2.5:-5;

ax = axes('xlim', [-25 0], 'ylim', [-35 -5]);

% Turn on the minor grid lines
grid(ax, 'minor')

% Modify the location of the x and y minor tick marks
ax.XAxis.MinorTickValues = g_x;
ax.YAxis.MinorTickValues = g_y;

enter image description here

答案 1 :(得分:1)

基本上代码执行此操作:

g_x = -25:1.25:0;

生成一个值为-25.0000 -23.7500 -22.5000 -21.2500 ... 0的数组 这些是绘制垂直线的位置

同样适用于g_y,但当然这决定了水平线的绘制位置。 选项'k'确定它是虚线。

循环只是通过数组。 因此,在第一次迭代中,绘图函数从位置

绘制一条线
[-25, -35]

到位置

[-25, -5]

因此,如果您想更改网格,只需更改g_x

中存储的值
g_x = -25:3.0:0;
例如,

将绘制宽度为3.0的垂直线 我希望这对你有意义。