[英]How can I plot in horizontal lines along X axis corresponding to a value on the y axis?
我有 2 个 arrays Q 和 Z。我想要 plot Q 在 y 轴上,Z 在 x 轴上。 Z 的元素是 0 和 1。
我想要的是从一个“1”到下一个“1”画一条水平线。 例如在向量Z中,第一个1到下一个1,有它对应的y值作为Q的第一个元素,然后第三个1到第四个1有它的y值作为Q中的第二个值等等。
现在我将有几条_ _ _(水平线跨越 1 之间的距离长度作为地块)
任何帮助将不胜感激。
假设 Q 和 Z 是列向量,你可以这样做:
Q2=[Q,Q];
inds=1:numel(Z);
inds=inds(Z==1);
X=reshape(inds',2,numel(inds)/2);
此时,Q2 和 X 应该具有相同的维度(双列矩阵)。 然后 plot 彼此相邻的水平线:
plot(X,Q2)
或者在彼此之上,从 x=0 开始,长度不同:
X2=[zeros(numel(Q),1),diff(X)]
plot(X2,Q2)
我不在电脑旁,所以无法确认退回尺寸的详细信息。
希望能帮助到你!
您可以使用find()
每条水平线的端点,然后使用 plot 找到线的端点plot
。
Q = [1 2 3 4];
Z = [1 0 1 1 0 0 1 1 1 0 1 0 1];
z_endpoints = find(Z);
figure;
for i = 1:numel(Q)
plot(z_endpoints([i*2-1,i*2]),Q([i,i]))
hold on
end
hold off
要获得颜色相同且颜色相同的 plot 的线条,您可以将这些点放在带有 NaN(非数字)的向量中以产生间隙。 更多的工作,但更清洁 plot。
Q = [1 2 3 4];
Z = [1 0 1 1 0 0 1 1 1 0 1 0 1];
z_endpoints = find(Z);
zpoints = [z_endpoints(1:2:end-1);z_endpoints(2:2:end);nan(size(Q))];
zpoints = zpoints(:);
qpoints = [Q;Q;nan(size(Q))];
qpoints = qpoints(:);
plot(zpoints,qpoints)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.