繁体   English   中英

我如何才能将 plot 沿 X 轴的水平线对应于 y 轴上的值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM