Matlab 中的分组箱线图:通用函数

2024-03-14

在看到 SO 中这篇很棒的文章后:

matlab绘制分组箱线图最有效的方法 https://stackoverflow.com/questions/15971478/most-efficient-way-of-drawing-grouped-boxplot-matlab

我想知道是否可以创建一个类似的函数,但更通用一些,因为在我的应用程序中,我需要对不同情况下的不同算法进行多次分析,并且为每种情况调整绘图代码将非常繁琐。

我想要一些针对此类情节的通用内容:


我编写了一个 Matlab 函数来为你(我)做这件事。

特征:

  • 在每个箱线图中支持不同数量的数据
  • 支持任意数量的组和每组的箱线图
  • 支持 Xlabel 和 boxplotlabel
  • 自动选择颜色或用户指定的颜色

函数结果示例:

CODE:

function multiple_boxplot(data,xlab,Mlab,colors)

% data is a cell matrix of MxL where in each element there is a array of N
% length. M is how many data for the same group, L, how many groups.
%
% Optional:
% xlab is a cell array of strings of length L with the names of each
% group
%
% Mlab is a cell array of strings of length M
%
% colors is a Mx4 matrix with normalized RGBA colors for each M.

% check that data is ok.
if ~iscell(data)
    error('Input data is not even a cell array!');
end

% Get sizes
M=size(data,2);
L=size(data,1);
if nargin>=4
    if size(colors,2)~=M
        error('Wrong amount of colors!');
    end
end
if nargin>=2
    if length(xlab)~=L
        error('Wrong amount of X labels given');
    end
end

% Calculate the positions of the boxes
positions=1:0.25:M*L*0.25+1+0.25*L;
positions(1:M+1:end)=[];

% Extract data and label it in the group correctly
x=[];
group=[];
for ii=1:L
    for jj=1:M
        aux=data{ii,jj};
        x=vertcat(x,aux(:));
        group=vertcat(group,ones(size(aux(:)))*jj+(ii-1)*M);
    end
end
% Plot it
boxplot(x,group, 'positions', positions);

% Set the Xlabels
aux=reshape(positions,M,[]);
labelpos = sum(aux,1)./M;

set(gca,'xtick',labelpos)
if nargin>=2
    set(gca,'xticklabel',xlab);
else
    idx=1:L;
    set(gca,'xticklabel',strsplit(num2str(idx),' '));
end


% Get some colors
if nargin>=4
    cmap=colors;
else
    cmap = hsv(M);
    cmap=vertcat(cmap,ones(1,M)*0.5);
end
color=repmat(cmap, 1, L);

% Apply colors
h = findobj(gca,'Tag','Box');
for jj=1:length(h)
   patch(get(h(jj),'XData'),get(h(jj),'YData'),color(1:3,jj)','FaceAlpha',color(4,jj));
end

if nargin>=3
    legend(fliplr(Mlab));
end
end

简单的例子:

clear;clc;
% Create example data
A=rand(100,10);
B=rand(200,10);
C=rand(150,10);

% prepare data
data=cell(10,3);
for ii=1:size(data,1)
    Ac{ii}=A(:,ii);
    Bc{ii}=B(:,ii);
    Cc{ii}=C(:,ii);
end
data=vertcat(Ac,Bc,Cc);

xlab={'Hey','this','works','pretty','nicely.','And','it','has','colors','!!!!'};
col=[102,255,255, 200; 
    51,153,255, 200;
    0, 0, 255, 200];
col=col/255;

multiple_boxplot(data',xlab,{'A', 'B', 'C'},col')
title('Here it is!')

Mathworks 文件交换文件可以在此处找到:http://www.mathworks.com/matlabcentral/fileexchange/47233-multiple-boxplot-m http://www.mathworks.com/matlabcentral/fileexchange/47233-multiple-boxplot-m

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matlab 中的分组箱线图:通用函数 的相关文章

  • 比较元胞数组中的字符串

    我试图在单词列表中找到最常见的单词 到目前为止 这是我的代码 uniWords unique lower words for i 1 length words for j 1 length uniWords if uniWords j lo
  • 在 Matlab 2014b 中移动等高线图的 z 值

    我正在尝试绘制曲面图 在曲面下方我希望显示轮廓线 但我希望轮廓位于z 1而不是默认值0 我找到了之前关于这个问题的帖子here https stackoverflow com questions 8054966 matlab how to
  • 与超类和子类构造函数接口

    我在 matlab 文档和之前有关使用 matlab 继承和类构造函数创建接口的问题中找不到帮助 为了使其整洁 放在一个包内 我可以将其压缩如下 而不是拖拽代码 一套 MyPkg有一个超类Super和一些子类Sub1 Sub2 我的大多数属
  • MATLAB 链表

    有哪些可能的方法来实现链表MATLAB http en wikipedia org wiki MATLAB 注意 我问这个问题是为了教学价值 而不是实用价值 我意识到 如果您实际上在 MATLAB 中滚动自己的链表 那么您可能做错了什么 然
  • 将 Android 应用程序与服务器上的 Matlab 应用程序连接

    我正在 Android 上开发一个应用程序 它将获取图像输入 并将该输入传递到安装 MATLAB 应用程序的服务器 MATLAB 应用程序将计算结果并将其返回到该 Android 应用程序 我想知道我可以使用哪个服务器 如何将 MATLAB
  • 在matlab中设置图例符号的精度

    我有这个 leg2 strcat Max Degree num2str adet 1 1 ch l leg3 strcat Min Degree num2str adet 1 2 ch l leg4 strcat Max Request n
  • 如何将Matlab代码库与Android集成?

    我有一个算法和 MATLAB 中的一些其他代码 我想在我的 Android 应用程序中使用它 我怎样才能做到这一点 我可以从 MATLAB 制作 jar 文件以便与 Android 一起使用吗 我必须做点别的事吗 如果您还有其他产品 适用于
  • Microsoft Visual C++ 2008 和 R2007b 的 Mex 类型

    我想对 vs2008 和 matlab2007b 使用 mex 类型 我尝试了下面的代码 include
  • 将 3d 矩阵重塑为 2d 矩阵

    我有一个 3d 矩阵 n by m by t 在 MATLAB 中表示n by m一段时间内网格中的测量值 我想要一个二维矩阵 其中空间信息消失了 只有n m随着时间的推移测量t剩下 即 n m by t 我怎样才能做到这一点 你需要命令r
  • 在箱线图中添加多条水平线

    我知道我可以使用类似命令向箱线图添加一条水平线 abline h 3 当单个面板中有多个箱线图时 我可以为每个箱线图添加不同的水平线吗 在上图中 我想为 1 添加行 y 1 2 为 2 添加行 y 1 5 为 3 添加行 y 2 1 我不确
  • 白色像素簇提取

    我正在研究指纹毛孔提取项目 并陷入毛孔 白色像素簇 提取的最后阶段 我有两个输出图像 我们可以从中获取毛孔 但不知道该怎么做 这两个图像的尺寸不同 image1 的尺寸为 240 320 image2 的尺寸为 230 310 这是我的图像
  • 是否有一个函数可以检查矩阵是否对角占优(行占优)

    矩阵是对角占优 http en wikipedia org wiki Diagonally dominant matrix 按行 如果对角线处的值在绝对意义上大于该行中所有其他绝对值的总和 对于列也是如此 只是相反 matlab中有没有函数
  • python 正弦和余弦精度

    如何提高Python正弦和余弦精度 例如 我想使用以下代码 只需计算随机复向量 x 的 y cos acos x import numpy as np N 100000 x np zeros N 1j np zeros N for k in
  • 在 Matlab 中显示有理数

    我有两个整数 m n 它们一起形成 m n 形式的有理数 现在我只想以这种理性的形式在 Matlab 中显示它们 我可以通过这样做来做到这一点 char sym m n 所以 如果 例如m 1 n 2 Matlab将显示1 2 然而 如果m
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • 优化 MATLAB 代码(嵌套 for 循环计算相似度矩阵)

    我正在 MATLAB 中基于欧几里德距离计算相似度矩阵 我的代码如下 for i 1 N M N is the size of the matrix x for whose elements I am computing similarit
  • 为什么 MATLAB 本机函数 cov(协方差矩阵计算)使用与我预期不同的除数?

    给定一个 M 维和 N 个样本的数据矩阵数据 例如 data randn N M 我可以计算协方差矩阵 data mu data ones N 1 mean data cov matrix data mu data mu N 如果我使用原生
  • matlab部署工具到java包javac错误

    我正在尝试将我的程序包装为与 java 一起使用 我首先尝试了一个简单的 hello world 你好世界 m disp 你好世界 我使用了deploytool并选择了java包 当它到达这一行时 执行命令 javac verbose cl
  • 从筛查乳腺 X 光检查数字数据库 (DDSM) 获取数据

    我正在尝试以可读格式获取 DDSM 数据集 有谁有 DDSM heathusf 程序的工作版本 可以在 Linux 或 Windows 上正常运行吗 我知道 DDSM 的 jpeg 程序有一个适用于 linux 的工作版本 位于http w
  • 直方图均衡结果

    I am trying to code histogram equalization by my self but the results are different from the built in function in matlab

随机推荐

  • Windows 驱动程序时间戳函数

    我正在修改现有的 Windows 内核设备驱动程序 并且需要在其中捕获时间戳 我打算使用 time h 库并调用 Clock 函数来实现这一点 但是在 Windows Visual Studio 下 链接失败 所以我把它作为我需要在驱动程序
  • 应用于浮动操作按钮的 Alpha 会创建奇怪的圆圈?

    在我的应用程序中 我使用材料设计浮动操作按钮 每当我将按钮的 backgroundTintColor 属性更改为 alpha 低于 255 的值时 它就会在按钮内创建这个奇怪的圆圈 我已经用我的 xml 代码提供了下面按钮的图片 任何帮助将
  • 存储人类可读的 UUID 的最小方式是什么?

    存储人类可读且与数据库广泛兼容的 UUID 的最小方式是什么 我正在考虑使用十六进制值的某种字符数组 作为常见的方法 我认为将二进制数据 16 字节 编码为 Base64 可能是您想要的
  • 如何选择帖子的最后编辑版本?

    我有一个像SO这样的问答网站 我还有一个表格 其中包含问题和答案及其编辑版本 这是我的表结构 QandA id title body related type edited id 1 title1 question content NULL
  • 为什么在此示例中使用 tmp_name

    我对 php 很陌生 我正在查看一个关于文件上传的示例 在里面getimagesize 功能 FILES file temp name 当我回显 FILES file temp name 时 它显示以下输出 C xampp tmp phpD
  • 我应该如何在 ffmpeg 中使用破折号(不是 webm_dash_manifest!)格式?

    FFmpeg 有一种名为 dash 的格式 gt ffmpeg formats E dash DASH Muxer 这大概对应于 libavformat dashenc c 中的代码 我可以在网络上找到许多有关如何使用 WebM DASH
  • WPF 图像滚动器 - 寻找行为类似于图像的控件

    在 WPF 中 实现如下图所示的控件的最佳方法是什么 你有很多图像 并不是所有的图像都能立即看到 但你可以向右和向左进行一些分页 或者滚动 我不知道如何称呼它 侧面的两个按钮左右滚动并带来新图像 如果需要滚动图像 则可以使用简单的 List
  • 不使用 Anaconda 的 Spyder 安装

    我已经在 Windows 7 上安装了 Python 3 6 32 位 有没有办法在不下载 Anaconda WinPython 等的情况下安装 Spyder 您需要运行以下命令才能安装并运行Spyder3没有蟒蛇 1 python m p
  • 如何解决 chrome 自动完成与 vuetify 中标签重叠的问题?

    当尝试使用以下命令创建登录表单时outlinedVutify 中的文本字段 chrome 自动完成功能与labels
  • 如何创建带有圆角的 NSImageView?

    目前我想创建一个圆角 NSImageView 我是新手 怎么做 我不知道这是否有效 所以请尝试一下 我们会祈祷 在 iPhone 上您可以使用CALayer of any UIView the NSViewiOS 中的对应部分 以获得圆角
  • Autofac 与 MVC4:控制器没有默认构造函数

    我一直在 MVC3 中使用 Autofac 并且喜欢它 现在我正在尝试用MVC4来实现它 我通过包管理器控制台安装了 Autofac MVC4 和 Autofac WebApi 的预发行版本 Install Package Autofac
  • JqPivot和ajax加载数据

    Can someone post a demo or a piece of code to exemplify how to use jqpivot and loading data using ajax Thank you 我建议您检查免
  • 更改 C# Parallel.For 循环的增量值

    我想使用 TPL 将每次传递将迭代器增加 2 的 for 循环转换为并行 For 循环 数据不依赖于顺序或以任何方式受到限制 但我只想处理源数组的每个其他元素中的数据 即下面代码中的 Datalist 因此需要增加 2 我的 For 循环
  • 如何在 JSF 中关闭浏览器时使会话失效

    任何人都可以帮助我在用户关闭浏览器时使会话无效 每当用户关闭浏览器时 JSF 中的会话就会自动失效 Thanks 下面的链接可能会有所帮助 浏览器窗口关闭事件 https stackoverflow com questions 163195
  • iOS 上的 Mobile Safari 在大页面上崩溃

    我遇到一个问题 当页面变得太大时 使用 jQuery 加载和操作 DOM 时 Mobile Safari 会崩溃 我在 iPhone 和 iPad 上都遇到同样的问题 排除移动页面故障以查找错误的最佳方法是什么 是否存在可能导致 Mobil
  • 每次运行后,Xcode 6 都会在 iOS8 模拟器中不断重命名我的应用程序目录。

    我正在运行 Xcode 6 Beta 5 但自从第一个 Beta 版以来这种情况就一直发生 每次运行后 我的应用程序在模拟器中的目录都会被重命名 我花了一段时间才弄清楚这一点 我用它来获取文档的目录引用 NSString folder NS
  • 当我尝试卸载包含 NSSM 服务的软件时,失败

    对于以下安装程序包 我有服务XXXService当我安装我的包时 成功安装并运行 但卸载失败并出现错误并恢复 我怀疑该服务仍在运行 阻止删除main exe file 请帮助完成卸载工作 重现此错误的完整最小源是可用的 https gith
  • 将 R 与 php 连接

    我正在尝试以 php localhost 方式运行 R 代码 所以我按照这个例子 https www r bloggers com integrating php and r https www r bloggers com integra
  • GGPlot2 中的 NLS 回归,绘制 y=Ax^b 趋势线误差

    我正在尝试在一组 3 个数据点上拟合基本幂趋势线 就像您在 Excel 中模拟 y Ax b 函数一样 我有一个非常简单的数据集加载到 LCurve data 中 如下所示 MDPT 4 10 9 51 6 曲线下面积 287069 4 2
  • Matlab 中的分组箱线图:通用函数

    在看到 SO 中这篇很棒的文章后 matlab绘制分组箱线图最有效的方法 https stackoverflow com questions 15971478 most efficient way of drawing grouped bo