我们想在不同的位置(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;
但只显示最后一个位置
如何保持图中所示的每个显示点?
非常感谢
答案 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);