在具有循环重复宽度的条形图中绘制水平条
Draw horizontal bars in a bar graph with circularly repeating widths
为了尝试绘制这个图,我使用的代码是:
figure;
axis equal;
axis([0 100 0 100]);
for i = 0:10:90
rectangle('position',[0 i (i+10) 10], 'facecolor', 0.5+zeros(1,3));
end
使用此代码,步长会不断增加,并且当 i = 50 时不会 return 到 10。如何使用这个 for
将步长保持在 10 到 50 的范围内环形?
还不错!只需在 rectangle
调用中添加 mod
语句:
figure;
axis equal;
axis([0 100 0 100]);
for i = 0:10:90
rectangle('position',[0 i mod(i,50)+10 10], 'facecolor', 0.5+zeros(1,3));
end
我们注意到您的循环从 0 到 90,步长为 10。mod
语句所做的是,一旦超过 50,它就允许回绕。因此,在 i = 0
,做 mod(0,50)
给我们 0,我们需要加 10,这样你的初始宽度是 10。接下来在 i = 10
,做 mod(10,50) + 10
给我们 20,我们继续直到 i = 40
,我们的宽度为 50。接下来在 i = 50
,我们应该将宽度重置为 10 和 mod(50,50) = 0
,因为没有余数。从图表的外观来看,一旦宽度达到 50,您希望将其重置为 10 的宽度,这就是 mod
运算符的用途。
这是我得到的:
为了尝试绘制这个图,我使用的代码是:
figure;
axis equal;
axis([0 100 0 100]);
for i = 0:10:90
rectangle('position',[0 i (i+10) 10], 'facecolor', 0.5+zeros(1,3));
end
使用此代码,步长会不断增加,并且当 i = 50 时不会 return 到 10。如何使用这个 for
将步长保持在 10 到 50 的范围内环形?
还不错!只需在 rectangle
调用中添加 mod
语句:
figure;
axis equal;
axis([0 100 0 100]);
for i = 0:10:90
rectangle('position',[0 i mod(i,50)+10 10], 'facecolor', 0.5+zeros(1,3));
end
我们注意到您的循环从 0 到 90,步长为 10。mod
语句所做的是,一旦超过 50,它就允许回绕。因此,在 i = 0
,做 mod(0,50)
给我们 0,我们需要加 10,这样你的初始宽度是 10。接下来在 i = 10
,做 mod(10,50) + 10
给我们 20,我们继续直到 i = 40
,我们的宽度为 50。接下来在 i = 50
,我们应该将宽度重置为 10 和 mod(50,50) = 0
,因为没有余数。从图表的外观来看,一旦宽度达到 50,您希望将其重置为 10 的宽度,这就是 mod
运算符的用途。
这是我得到的: