【问题标题】:Axis labels are invisible?轴标签不可见?
【发布时间】:2015-01-31 01:36:48
【问题描述】:

我有以下代码:

figure(1);
suptitle('Percentage of games won with board size');
count = 0;
% relation of board size and the game outcome
for i = 1:4 % number combination of player and opponent
    for j = 1:4 % starting indexes for board sizes
        percentageStepResult = [sum(sizeResultVec{i}(j:4:120) == 1), sum(sizeResultVec{i}(j:4:120) == -1), sum(sizeResultVec{i}(j:4:120) == 0)];
        count = count + 1;
        handle = subplot(4, 4, count);
        xlabel('x axis');
        ylabel('y axis');
        pie(percentageStepResult)
    end
end

这会产生以下情节:

为什么这根本不显示标签?我正在尝试为整个情节设置一个 xlabel 和一个 ylabel,但我很困惑为什么它们甚至不会为单个子情节显示。

【问题讨论】:

  • 使用text 影响轴标签。

标签: matlab label subplot


【解决方案1】:

XY 轴的概念对我来说对于 pie 图表来说意义不大,可能对于 Mathworks 也是如此,所以他们决定“隐藏”这些无意义的标签.

标签未显示,因为饼图下方的每个轴都将其visible 属性设置为'off'。这隐藏了有关斧头的所有内容(即刻度、网格线、背景颜色等)。

如果它们对您来说没有意义并且您确实希望显示标签,则必须将坐标轴visible 属性设置为'on'。下面的代码灵感来自您的示例,并向您展示了如何操作。

这种方法的问题在于,您必须手动“隐藏”您不想看到的所有其他内容。这就是为什么我隐藏了刻度线、背景和网格线,但斧头边框会保留。

count = 0 ;
hdl = zeros(4,4) ;
for i = 1:4 %// number combination of player and opponent
    for j = 1:4 %// starting indexes for board sizes
        percentageStepResult = rand(4,1) ;
        count = count + 1 ;
        hdl(i,j) = subplot(4, 4, count) ;
        pie(percentageStepResult)
        set( hdl(i,j) , 'Visible','on' )            %// set the underlying axes to visible
        set( hdl(i,j) , 'Color','none' )            %// set the axes background color to nothing (transparent)
        set( hdl(i,j) , 'XTick',[] , 'YTick',[] )   %// remove the 'X' and 'Y' ticks
        grid off                                    %// make sure there is no grid lines
        xlabel('x axis');
        ylabel('y axis');
    end
end

请注意,我还更改了将 句柄 保存到轴的变量。调用 handle 不是一个好主意,因为它是 Matlab 内置函数的名称。我还将这些句柄放在一个数组中,以便您以后可以根据需要设置轴属性。

另外请注意,您可以将所有对set( hdl(i,j) , ... ) 的调用合并到一行中,为了清楚起见,我仅在此处进行了开发。

编辑:如果您还想隐藏斧头边框(X0 和 Y0 线),请查看 this questions 的答案。


这向您展示了如何强制显示每个斧头标签,但实际上它非常混乱。相反,我建议只创建 text 对象并计算出如何将它们放置在每个饼图附近。至少您不必手动管理其他所有内容的可见性。

【讨论】:

  • 如果他想要的只是整个绘图分组的轴,那么只制作一个虚拟轴并移除背景似乎更有意义。或者使用 uicontrol 创建几个文本标签。
  • @excaza,完全同意你的看法。我展示的方法只是解释和回答为什么标签不出现。在他的情况下,我只会使用text 对象。
猜你喜欢
  • 2012-05-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-06
  • 1970-01-01
  • 1970-01-01
  • 2020-11-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多