查看不同位置的一点

时间:2016-06-21 21:21:33

标签: matlab position point figure

我们想在不同的位置(2,8,..)显示一个“叫做type1”的点,我们使用了这段代码:

x = linspace(0,30,1000);
axis([0,20,-0.4,1.5]);
ax = gca;
h = hgtransform('Parent',ax);
type1=plot(x(1)-1,y(1),'s','Parent',h,'MarkerFaceColor','red','MarkerSize',20);
type2=plot(x(1)-1,y(1),'s','Parent',h,'MarkerFaceColor','green','MarkerSize',40);
type1.XData= 2;
hold on
type2.XData= 6;
hold on
type1.XData= 8;

但只显示最后一个位置

如何保持图中所示的每个显示点?

非常感谢

1 个答案:

答案 0 :(得分:1)

hold on的目的是允许您在同一轴上拥有多个绘图对象。因此,您需要在两次hold on次调用之间使用plot语句,以确保它们都显示出来。

type1 = plot(x(1)-1,y(1),'s','Parent',h,'MarkerFaceColor','red','MarkerSize',20);
hold on
type2 = plot(x(1)-1,y(1),'s','Parent',h,'MarkerFaceColor','green','MarkerSize',40);

现在,当您更改其中一个图的XData属性时,即修改现有的绘图对象,并且旧的XData值将不可见(hold on与绘图的内容无关,只与绘图对象本身有关。)

如果要绘制多个x值,可以创建其他绘图对象(每个x位置一个)。

plot(2, y(1))
plot(6, y(1))
plot(8, y(1))

更好的方法是在初始plot命令中预先绘制所有点。

plot(x, y, 's', 'Parent', h, 'MarkerFaceColor', 'r', 'MarkerSize', 20);
hold on
plot(x, y, 's', 'Parent', h, 'MarkerFaceColor', 'g', 'MarkerSize', 40);