【问题标题】:How does one modify the axes in MATLAB's phylogenetic tree tool?如何修改 MATLAB 系统发育树工具中的轴?
【发布时间】:2011-05-12 23:22:07
【问题描述】:

我想为我在 Java 中生成的一些凝聚集群显示漂亮的树状图。我将集群写入 Newick 格式的文件中。然后,我可以得到一张几乎是我想要的漂亮图片。

tr = phytreeread('myfile.tree')
phytreetool(tr)

不幸的是,X 轴不是我想要的。我更喜欢“反转”轴,因为聚类的迭代从右到左进行,例如firstNamesetFirstName 在第一次迭代中聚集。有谁知道我该怎么做,或者至少关闭 X 轴标签? (无论如何,默认轴试图告诉我什么?)

【问题讨论】:

    标签: matlab plot properties dendrogram phylogeny


    【解决方案1】:

    首先,您需要访问绘制树状图的轴的句柄。如果它是唯一打开的图形,您可以像这样使用函数FINDALL

    phyAxes = findall(0,'Type','axes');
    

    现在,您要更改的不是 x 轴方向,因为这也会反转绘制的树状图。您实际上只想更改labels used for the x-axis tick marks。如果您只想关闭它们,可以这样做:

    set(phyAxes,'XTick',[]);
    

    现在,我不确定 x 轴要告诉您什么。在您的示例中,对于最左侧的分支点(我猜是“根”),似乎每个分支点都位于沿 x 轴的整数值处,从 0 开始。包含firstNamesetFirstName 的最右侧分支位于值 21。如果要更改轴标签以使最右侧分支位于 0 且最左侧分支位于 21,则可以如下修改轴:

    set(phyAxes,'XTick',0:21,'XTickLabel',num2str((21:-1:0).'));
    

    【讨论】:

      【解决方案2】:

      这对你有帮助吗?

      set(gca,'XDir','reverse')
      

      编辑 你可能会发现很多有趣的here。干杯!

      【讨论】:

      • 看起来很有希望...在尝试获取正确语法的各种失败尝试后,我设法使用属性编辑器更改了轴方向。不幸的是,它同时反转了轴方向树状图本身,因此最终效果与以前一样错误。
      【解决方案3】:

      我需要类似的东西。我不知道它是否是 Matlab R2021b 的新功能,但现在有一个 plot(tree) 函数可以在常规的 Matlab 图形上绘制树。绘图后,我确定最大的 X 值并更新 XTickLabels。

      B = [1 2 ; 3 4];
      tree = phytree(B);
      h = plot(tree);
      ax = h.axes;
      
      xdata = get(findobj(h.axes,'Type','Line'),'XData');
      maxdist = max([xdata{:}]);
      ax.XTickLabel = num2str(maxdist - str2double(ax.XTickLabel));
      

      Phylogenetic tree with reversed Xtick labels

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多