我需要交换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);
绘制正确。
答案 0 :(得分:2)
看起来,只要你旋转视点(甚至1度),矩形仍然在轴子列表中,但它不会被渲染。我尝试使用所有不同的渲染器(painter
,openGL
和zbuffer
),这是相同的行为(至少在我的系统上: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])