交换x轴和y轴后,Matlab矩形无法正常工作

时间:2015-05-23 12:44:29

标签: matlab

我需要交换x和y轴并绘制一个矩形。我用"查看(-90,90)"和轴交换正确,但不绘制矩形。代码:

axis([1 11 1 11])
xlabel('x')
ylabel('y')
rectangle('Position',[5 5 1 1], 'FaceColor','k')
view(-90,90) 
set(gca,'ydir','reverse')
set(gca,'xdir','reverse')
set(gca, 'YAxisLocation', 'right')

当我用"绘图"而不是"矩形",例如

X = (1:11);
Y = (1:11);
plot(X, Y);

绘制正确。

3 个答案:

答案 0 :(得分:2)

看起来,只要你旋转视点(甚至1度),矩形仍然在轴子列表中,但它不会被渲染。我尝试使用所有不同的渲染器(painteropenGLzbuffer),这是相同的行为(至少在我的系统上:Matlab 2013a,win8

因此,快速解决方法是使用patch对象。我尝试了这些,无论从什么角度来看它们都会被渲染。除了圆角外,属性大致相同,但如果你不需要,那么你最好还是patch

如果为了便于使用,您希望模仿rectangle的调用语法,则可以将调用打包到自定义函数recpatch中。如果坐标和颜色是您想要设置的唯一内容,您甚至可以使用内联函数:

%// define an inline helper function to create a rectangle patch object
recpatch = @(x,y,w,h,c) patch([x x+w x+w x],[y y y+h y+h], c ) ;

%// create your rectangle (and retrieve the handle if you want to set other properties later)
hp = recpatch(5,5,1,1,'k') ;

此矩形将通过旋转测试; - )

答案 1 :(得分:0)

实际上轴是交换的,但你正在画一个正方形,所以你没有注意到。 试试这个,你会注意到交换:

rectangle('Position',[5 5 2 1], 'FaceColor','k')

答案 2 :(得分:0)

试试这个:

rectangle('Position',[1 2 5 6])
axis([1 11 1 11])