2016-03-22 271 views
0

我有一个GUI窗口,在其上有一个轴箱,并且当使用绘图功能时,我想在这个轴上反转Y轴方向。当我尝试使用让说:轴上的反向Y轴

set(axes1,'YDir','reverse'); 

我使用matlab.graphics.chart.primitive.Line收到以下错误

错误/套
有就行类中没有YDir财产。

当我检查这个axes1的属性,我得到

AlignVertexCenters: 'off' 
      Annotation: [1x1 matlab.graphics.eventdata.Annotation] 
      BeingDeleted: 'off' 
      BusyAction: 'queue' 
     ButtonDownFcn: '' 
       Children: [0x0 GraphicsPlaceholder] 
       Clipping: 'on' 
       Color: [1 0 0] 
      CreateFcn: '' 
      DeleteFcn: '' 
      DisplayName: '' 
     HandleVisibility: 'on' 
       HitTest: 'on' 
     Interruptible: 'on' 
       LineJoin: 'round' 
      LineStyle: '-' 
      LineWidth: 1 
       Marker: 'none' 
     MarkerEdgeColor: 'auto' 
     MarkerFaceColor: 'none' 
      MarkerSize: 6 
       Parent: [1x1 Axes] 
     PickableParts: 'visible' 
       Selected: 'off' 
    SelectionHighlight: 'on' 
        Tag: '' 
        Type: 'line' 
     UIContextMenu: [0x0 GraphicsPlaceholder] 
       UserData: [] 
       Visible: 'on' 
       XData: [1x3937 double] 
      XDataMode: 'manual' 
      XDataSource: '' 
       YData: [1x3937 double] 
      YDataSource: '' 
       ZData: [1x0 double] 
      ZDataSource: '' 

所以我试图改变YDir从正常属性检查扭转并没有奏效。 我试过使用flipud,它只是翻转线,但不是Y轴上的值。

回答

2

看起来你所称的axes1实际上是一个line对象。您可以通过获取对象的Type属性轻松地进行检查。

get(axes1, 'Type') 

% Or in newer versions of MATLAB 
class(axes1) 

你会想,而不是设置YDir它是父轴。我们可以使用ancestor函数轻松获得。

hax = ancestor(axes1, 'axes'); 
set(hax, 'YDir', 'reverse') 

或者更简单地为您的具体情况:

set(axes1.Parent, 'YDir', 'reverse') 

在未来,仔细阅读错误消息的整个内容。这里很明显你的命令不工作,因为它是一条线。

+0

另外'hax = axes1.Parent;'应该可以工作 –

+1

@LuisMendo只有当它不在'hggroup'内并且你使用的是2014b + :) – Suever

+0

那么,OP的例子说对象有一个'Parent',它是轴对象 –