多个分类数据集的箱线图

261(30天)
我想画出箱线图3重复变量收集4的数据集,其中每个数据集有15个x3的价值观。所以我想把4大类轴,其中每个将有3个垂直的箱线图。
谁能帮我。好吗?
我有专员指出了文件名称的特性。
提前谢谢。

接受的答案

克里斯·拉皮埃尔
克里斯·拉皮埃尔 2019年10月25日
编辑:克里斯·拉皮埃尔 2019年10月25日
您可以使用“ BoxStyle”、“满”名称值对 当创建箱线图。我不喜欢看起来如何。最好的我能找到我喜欢的方式是创建它 这篇文章 。注意,填充颜色的对象被放置在箱线图。这意味着它会掩盖中间线,除非你调整其透明度。
我把策划的意思是这样的新对象创建填充。我也添加到传奇,这样其他人知道标准的标记代表什么。
最终的答案是这样的:
负载“plot.mat数据”
nDataSets = 7;
据nvar = 3;
造船= 15;
%创建列向量来表示数据集
数据集=分类([的(据nvar *造船,1);
(据nvar *造船,1)* 2;
(据nvar *造船,1)* 3;
(据nvar *造船,1)* 4;
(据nvar *造船,1)* 5;
(据nvar *造船,1)* 6;
(据nvar *造船,1)* 7]);
%创建列向量来表示变量
清晰的var
var(1:造船,1)=“Var1”;
var(+ 1:结束+造船,1)=“Var2”;
var(+ 1:结束+造船,1)=“Var3”;
Var =分类([Var; Var; Var; Var; Var; Var; Var));
%创建一个表
testData =表(数据、数据集、Var);
h =箱线图(testData.data {testData.dataSet, testData.Var},
“ColorGroup”testData.Var,
“标签”,{,“Data1”,,,“Data2”,,,“Data3”,,,“Data4”,,,“Data5”,,,“Data6”,,,“Data7”,});
%设置(gca, XTickLabel, {' '})
%不显示异常值
ol = findobj (h,“标签”,“离群值”);
集(ol,“可见”,“关闭”);
%找到所有盒子
box_vars = findall (h,“标签”,“盒子”);
%填满箱子
j = 1:长度(box_vars)
补丁(get (box_vars (j),“XData”),得到(box_vars (j),“YData”),box_vars .Color (j),“FaceAlpha”、1。“EdgeColor”,“没有”);
结束
%添加传奇
Lg =传奇(box_vars (1:3) {G1的,“G2”,“G3”},“位置”,“northoutside”,“定位”,“水平”);
% %的意思是添加到箱线图
summaryTbl = groupsummary (testData, {“数据集”,“Var”},“的意思是”)
持有
情节(summaryTbl.mean_data' + k ')
持有
Lg。{4}=字符串“的意思是”;
5个评论
克里斯·拉皮埃尔
克里斯·拉皮埃尔 2023年4月7日
编辑:克里斯·拉皮埃尔 2023年4月7日
最好问自己的一个新问题,越来越多的人会看到它。
我看不出这样做的一个好方法 箱线图 ,但 boxchart 真的可以简化代码(它走过了漫长的道路因为最初问的问题)。它需要一个小操作意味着值一致,但没有什么困难。
X标记标签名称直接来自分类信息用来对数据进行分组。你不需要使用分类分组,但它确实使它方便小组非数字数据。
在这里,我已经改名为分类展示。
%创建一个测试数据集
nDataSets = 7;
据nvar = 2;
造船= 15;
data =兰特(造船*据nvar * nDataSets, 1);
%创建列向量来表示数据集
数据集=分类([的(据nvar *造船,1);
(据nvar *造船,1)* 2;
(据nvar *造船,1)* 3;
(据nvar *造船,1)* 4;
(据nvar *造船,1)* 5;
(据nvar *造船,1)* 6;
(据nvar *造船,1)* 7]);
数据集= renamecats(数据集,{“红色”,“橙”,“黄色”,“绿色”,“紫色”,靛蓝色的,“紫色”});
%创建列向量来表示变量
清晰的var
var(1:造船,1)=“Var1”;
var(+ 1:结束+造船,1)=“Var2”;
Var =分类([Var; Var; Var; Var; Var; Var; Var));
%创建一个表
testData =表(数据、数据集、Var);
% # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
实际使用boxchart可视化代码%
boxchart (testData.dataSet testData.data,“GroupByColor”testData.Var)
% %的意思是添加到箱线图
summaryTbl = groupsummary (testData, {“数据集”,“Var”},“的意思是”);
持有
情节((1:nDataSets *据nvar) / 2 + 0.25, summaryTbl.mean_data,' + k ')
持有
传奇([“G1”,“两国集团”,“的意思是”),“位置”,“northoutside”,“定位”,“水平”)

登录置评。

更多的答案(3)

克里斯·拉皮埃尔
克里斯·拉皮埃尔 2019年10月24日
编辑:克里斯·拉皮埃尔 2019年10月24日
不知道你希望它是什么样子的,但这里有一个方法。
负载features.mat
data1 ={1}特性;
data2 ={2}特性;
data3 ={3}特性;
data4 ={4}特性;
次要情节(1,4,1)
箱线图(data1)
标题(“数据1”)
次要情节(1,4,2)
箱线图(data2)
标题(《数据2》)
次要情节(1,4,3)
箱线图(data3)
标题(的数据3 ')
次要情节(1,4,4)
箱线图(data4)
标题('数据4 ')
naina_features_4boxplot.png
1评论
克里斯·拉皮埃尔
克里斯·拉皮埃尔 2019年10月24日
编辑:克里斯·拉皮埃尔 2019年10月24日
可能很酷的一件事就是利用分组选项(第二个语法中描述 医生 )。为此,我建议让您的数据到一个 。用所有的数据创建一个变量,一个 分类 信息数据集,和一个分类信息的变量。
%创建所有数据的列向量
data = [data1 (:);data2 (:);data3 (:);data4 (:));
%创建列向量来表示数据集
数据集=分类([的(元素个数(data1), 1);
(元素个数(data2), 1) * 2;
(元素个数(data3), 1) * 3;
(元素个数(data4), 1) * 4]);
%创建列向量来表示变量
清晰的var
var(1:长度(data1), 1) =“Var1”;
var(端+ 1:端+长度(data1), 1) =“Var2”;
var(端+ 1:端+长度(data1), 1) =“Var3”;
Var =分类([Var; Var; Var; Var]);
%创建一个表
testData =表(数据、数据集、Var);
Naina_table.png
现在,您可以使用一个单一的箱线图命令来创建你所描述的箱线图。您可以使用多个分组变量的数据组织成独立的箱线图(将它们包含在花括号)。在这里,我首先 数据集 ,然后由 Var
箱线图(testData.data {testData.dataSet, testData.Var})
这两个轴标签显示数据集1)和2)变量。
如果你想看到所有的箱线图为一个特定的变量相邻,改变你的订单第一组的分组变量 Var ,然后由 数据集
箱线图(testData.data {testData.Var, testData.dataSet})
注意轴标签仍然可以用来正确地标识每个箱线图。

登录置评。


琼娜
琼娜 2019年10月24日
嗨短剑,
谢谢你的回复。第二个函数我但我有更多的工作指针,我将非常感激如果你能帮助。
1:如何颜色Var1, 2或Var3方案。用同样的颜色?
2:这是possile添加Var的传说1、2和3,而不是显示在轴。?
3:我可以显示的数据类型= 1,2,3,4作为名义上的数据只有一次而不是重复所有3变量。e。g为1日Var1显示Data1的轴,Var2 Var3。?
4:情节是离群值显示,怎么忽视。?
TIA。
5个评论
亚当Danz
亚当Danz 2021年5月22日
@ 琼娜 我可能会跟着克里斯的建议和使用分组选项 箱线图 但有几个功能提供额外的文件交换分组方法。

登录置评。


社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!