我想用 x=10, 20,30,...,100 绘制平行于 y 轴的所有线
我把 x 写成:
x=linspace(1,100,10);
我尝试以这种方式绘制:
figure(1)
plot([x; x], [zeros(1, length(x))*min(ylim); ones(1, length(x))*max(ylim)],'r')
但这并不好。我怎样才能写 y 来绘制这样的线条?
你有正确的想法,但是你的 x 坐标和你的线末端的 y 坐标都是错误的。对于 x,您应该使用:
x = 10:10:100;
这会生成[10, 20, ..., 100]
. linspace(1, 100, 10)
另一方面,在 1 到 100 之间生成 10 个等距的值 - 这有点不同。要获得相同的值,linspace
你会这样做linspace(10, 100, 10)
。
对于 y,因为您使用zeros
,所以该线仅从 0 延伸到 y 上限,而不是从下限延伸到上限。你的电话应该是:
plot([x; x], repmat(ylim', 1, numel(x)), 'r')
这会重复每条线的 y 轴限制,因此i
第 - 条线是从(x(i), ylim(1))
到绘制的(x(i), ylim(2))
。
这并不能完全回答您的问题,但可能是您正在寻找的。
使用XGrid
属性创建(支持)平行于 Y 轴的线。
ax = axes;
ax.XGrid = 'on';
或对于较旧的 Matlab 版本
set(ax, 'XGrid', 'on')
(如果你没有轴柄ax
,你可以使用gca
)
XTick
这会在绘图的当前创建线条。如果你想让网格线有一个特定的范围,你必须改变 XTick
ax.XTick = 0:10:100;
如果您认为线条太弱(难以看到),您可以调高网格 alha 值(默认值为 0.5)。
ax.GridAlpha = 1; %
或者给它上色
ax.GridColor = 'r'; % Set grid color to red