matlab - 如何在条形图之间添加距离线

标签 matlab bar-chart visualization matlab-figure p-value

我想在多个条形图之间指示 p 值,如下图所示:

Input 1

但是我在MATLAB的条形图页面上没有找到这方面的相关命令。

这是我的条形图和标准偏差图形代码:

x = 1:3;
y = [17.5, 97.5, 100];
std = [23.84848004, 10.89724736, 0];

figure
hold on
bar(x,y)
errorbar(y,std,'.')

XTickLabel={'1' ; '2'; '3' ; '4'};
XTick=2:4:15
set(gca, 'XTick',XTick);
set(gca, 'XTickLabel', XTickLabel);

最佳答案

我知道没有这样的函数,但是很容易写一个:

function [hl,ht] = overbar(x1, x2, y, txt)
sz = get(gca,'FontSize');
bg = get(gca,'Color');
d = 2; % size of hook, change depending on y axis scaling
hl = line([x1,x1,x2,x2], [y,y+d,y+d,y]);
ht = text((x1+x2)/2, y+d, txt, ...
          'HorizontalAlignment','center', ...
          'VerticalAlignment','middle', ...
          'FontSize',sz, ...
          'BackgroundColor',bg);
end

此函数使用坐标区的字体大小和颜色属性来确定如何绘制文本。它首先绘制线条,然后在顶部绘制文本,使用纯色背景使线条看起来被文本打断。

这是你将如何使用它:

x = 1:3;
y = [17.5, 97.5, 100];
std = [23.84848004, 10.89724736, 0];

figure
hold on
set(gca, 'FontSize',16)
bar(x, y)
errorbar(y, std, '.')

set(gca, 'ylim',[0,150]);

XTickLabel = {'A', 'B', 'C'};
set(gca, 'xtick',x, 'XTickLabel',XTickLabel);

overbar(1 ,2, 120, 'p=0.037');
overbar(2, 3, 130, 'p<0.0001');
overbar(1, 3, 140, 'p<0.0001');

output plot

关于matlab - 如何在条形图之间添加距离线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55896075/

相关文章:

pandas - 向条形图添加分组刻度

python-2.7 - 如何在 python seaborn 热图旁边有一个栏来显示行值的总和?

r - 沿 geom_segment() 的 ggplot2 颜色渐变

algorithm - 自动选择条形图前x个散点图位置

matlab - 如何在matlab中的单元格数组中的两个零之间找到一个非零数

javascript - 如何在不更改坐标的情况下转换(旋转)svg 文本元素?

python - 在python中分隔条形图组

MySQL表结构可视化?

matlab - 如何优雅地忽略 MATLAB 函数的某些返回值

Matlab - 如何使图形成为当前图形?如何使轴电流?