在条形图上叠加标记
superimpose marker on barplot
我使用代表组均值的条形图创建了一个图形。
我有一个矩阵可以告诉我均值在统计上是否不同。
sign_diff =
0 0 0 1
0 0 0 1
0 0 0 0
1 1 0 0
在这种情况下,第一组和第二组的平均值与第四组的平均值有显着差异。
如何读取矩阵:
第一行:最后一列有一个 1 -> 第一个小节与第 4 小节不同,因此第 1 小节和第 4 小节得到一个星号。
第二行:最后一列中有一个 1 -> 第二个小节与第 4 个小节不同,因此第 2 小节和第 4 个小节得到一个星号。由于第 1 条和第 2 条没有区别,因此第 1 条和第 2 条中的星星应该处于相同的高度
如何在不同的条形图顶部添加标记?
我想要这样的东西:
请注意,前两颗星应该在同一水平,表示bar1和bar2没有区别,但它们都不同于bar4(那么bar 4上面的星应该更高)
希望你能帮助我
我仍然不确定我是否完全掌握高度逻辑(而且我们没有 functioning example) but in the meantime there's a simple answer the superimposition question. You can use line
将星星叠加到您的情节上。
例如:
y = [1 2 3 4];
bar(y);
ylim([0 6]);
sign_diff = [0 0 0 1; 0 0 0 1; 0 0 0 0; 1 1 0 0];
needs_star = (sum(sign_diff) ~= 0); % See which bars need a star
star_heights = sum(sign_diff).*0.75;
star_x = 1:length(y);
star_y = max(y) + star_heights;
star_x = star_x(needs_star);
star_y = star_y(needs_star);
line(star_x, star_y, ...
'linestyle', 'none', ...
'marker', 'p', ...
'markersize', 15 ...
);
生成以下内容:
line
接受 XY 输入,因此如果您可以根据 sign_diff
矩阵为星星创建坐标,则可以在 line
调用中使用它们。
编辑:我已经更新了我在弄清楚逻辑方面的努力。需要根据您的数据进行一些调整。 ylim
和 max
调用需要根据图表中数据的最大高度进行调整,以便将所有内容都放入轴中并确保没有重叠。您可以将 0.75
值调整为您想要的任何值,以便充分显示差异。这可能不是最有效的方法,但行为至少是明确的。
我使用代表组均值的条形图创建了一个图形。
我有一个矩阵可以告诉我均值在统计上是否不同。
sign_diff =
0 0 0 1
0 0 0 1
0 0 0 0
1 1 0 0
在这种情况下,第一组和第二组的平均值与第四组的平均值有显着差异。
如何读取矩阵:
第一行:最后一列有一个 1 -> 第一个小节与第 4 小节不同,因此第 1 小节和第 4 小节得到一个星号。
第二行:最后一列中有一个 1 -> 第二个小节与第 4 个小节不同,因此第 2 小节和第 4 个小节得到一个星号。由于第 1 条和第 2 条没有区别,因此第 1 条和第 2 条中的星星应该处于相同的高度
如何在不同的条形图顶部添加标记? 我想要这样的东西:
请注意,前两颗星应该在同一水平,表示bar1和bar2没有区别,但它们都不同于bar4(那么bar 4上面的星应该更高)
希望你能帮助我
我仍然不确定我是否完全掌握高度逻辑(而且我们没有 functioning example) but in the meantime there's a simple answer the superimposition question. You can use line
将星星叠加到您的情节上。
例如:
y = [1 2 3 4];
bar(y);
ylim([0 6]);
sign_diff = [0 0 0 1; 0 0 0 1; 0 0 0 0; 1 1 0 0];
needs_star = (sum(sign_diff) ~= 0); % See which bars need a star
star_heights = sum(sign_diff).*0.75;
star_x = 1:length(y);
star_y = max(y) + star_heights;
star_x = star_x(needs_star);
star_y = star_y(needs_star);
line(star_x, star_y, ...
'linestyle', 'none', ...
'marker', 'p', ...
'markersize', 15 ...
);
生成以下内容:
line
接受 XY 输入,因此如果您可以根据 sign_diff
矩阵为星星创建坐标,则可以在 line
调用中使用它们。
编辑:我已经更新了我在弄清楚逻辑方面的努力。需要根据您的数据进行一些调整。 ylim
和 max
调用需要根据图表中数据的最大高度进行调整,以便将所有内容都放入轴中并确保没有重叠。您可以将 0.75
值调整为您想要的任何值,以便充分显示差异。这可能不是最有效的方法,但行为至少是明确的。