【问题标题】:Matlab: plot lines parallel to the y axisMatlab:绘制平行于y轴的线
【发布时间】:2017-01-25 09:08:47
【问题描述】:

我想用 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=10, 20,,...,100 但 linspace(1,100,10); 创建一个起始值为 1 的向量。您应该使用 linspace(10,100,10); 或更简单的 10:10:100跨度>

标签: matlab plot yaxis


【解决方案1】:

你的想法是对的,但是你的 x 坐标和你的线末端的 y 坐标都是错误的。对于 x,您应该使用:

x = 10:10:100;

这会生成[10, 20, ..., 100]。另一方面,linspace(1, 100, 10) 在 1 和 100 之间生成 10 个等距的值 - 这有点不同。要使用linspace 获得相同的值,您可以使用linspace(10, 100, 10)

对于y,因为你使用zeros,所以这条线只从零延伸到y上限,而不是从下限延伸到上限。你的电话应该是:

plot([x; x], repmat(ylim', 1, numel(x)), 'r')

这会重复每条线的 y 轴限制,因此i-th 线从(x(i), ylim(1)) 绘制到(x(i), ylim(2))

【讨论】:

  • 这样平行于y轴的线,没有x = 10,20,30, ... 100,而是有一个大约x=11,25大一点的x...跨度>
  • 那是因为你如何使用linspace。那里也有错误,我将编辑答案。
【解决方案2】:

这并不能完全回答您的问题,但可能正是您想要的。

使用XGridproperty 创建(支持)平行于 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

【讨论】:

  • 我也想用这个 :) 但它不像 IMO 那样灵活。
猜你喜欢
  • 2023-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-15
  • 2015-09-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-19
相关资源
最近更新 更多