颜色编码的条形图
11视图(30天)
显示旧的评论
我有3列的表、时间、步骤,行动,我试图让一个条形图。我想要时间轴上的轴和步骤,我想基于行动的颜色代码。我用下面的代码,但是我的图出来只是一种颜色,蓝色,那也许是因为第一个数据点是循环。我不知道我做错了什么。提前感谢你的帮助!
图(1)
持有在
为i = 1:长度(StepsS2.Time)
(StepsS2 b =酒吧。时间,StepsS2.Steps);
如果StepsS2.Action (i) = =“跳”
集(b,“FaceColor”,“r”);
elseifStepsS2.Action (i) = =“运行”
集(b,“FaceColor”,“y”);
elseifStepsS2.Action (i) = =“蹲”
集(b,“FaceColor”,“c”);
elseifStepsS2.Action (i) = =“循环”
集(b,“FaceColor”,“b”);
其他的
集(b,“FaceColor”,‘g’);
结束
结束
持有从
1评论
dpb
2021年7月6日
代码上面画上相同的条形图,之前的表演为每个通过循环。
只有一个向量的
y
变量,
酒吧()
酒吧只创建一个对象,所有的酒吧都是一样的颜色。它是蓝色的,因为去年的数据必须结束
“循环”
,而不是第一个。
你需要重新排列表中的数据为每个酒吧想要有一个变量;填补缺失值的时代与南这些值将被忽略。
然后调用bar()只有一次和设置栏的颜色使用数组处理。
我演示了一个较小的情况下就在最近
//www.tatmou.com/matlabcentral/answers/871108-legend-in-bar-plot?s_tid=srchtitle
虽然使用了
“堆叠”
情节能够得到三块,因为酒吧()把一个向量
y
作为一个酒吧对象无论输入取向。你有一个数组,所以不会遇到限制。
附上.mat直接与您的数据文件如果希望别人玩…
接受的答案
本杰明·克劳斯
2021年7月6日
编辑:本杰明·克劳斯
2021年7月6日
我怀疑你有问题是因为你正试图比较字符向量错误。
格式是什么
StepsS2.Action
在吗?是字符矩阵,特征向量的单元阵列,字符串数组,或分类?
你可以告诉这样做:
类(StepsS2.Action)
disp (StepsS2.Action)
如果你这些命令的输出包含在一个回复,有人可以给你一个更个性化的答案。
有几个可能:
例如,如果
StepsS2.Action
是一个单元阵列的特征向量:
如果StepsS2 %。行动是单元阵列的特征向量:
StepsS2.Action= {“跳”,“运行”,“蹲”,“循环”,“其他”};
%索引()和比较使用“= =”将抛出一个错误。
StepsS2.Action (1) = =“跳”
错误:%运算符“= =”不支持操作数类型的“细胞”。金宝app
%索引和{}比较使用“= =”将生成一个逻辑
%向量,但前提是大小匹配。
StepsS2.Action{1} ==“跳”%输出= [1 1 1 1]
StepsS2.Action{1} ==“运行”
%错误:数组已经为这个操作不兼容的大小。
%你想要的是比较使用“比较字符串”或“isequal”
比较字符串(StepsS2.Action (1),“跳”)% = true输出
比较字符串(StepsS2.Action {1},“跳”)% = true输出
如果不是
StepsS2.Action
是一个字符串向量,你想做什么工作。
注意:您可以从单元阵列特征向量转换为字符串使用
字符串
命令。
如果StepsS2 %。行动是单元阵列的特征向量:
StepsS2.Action= [“跳”,“运行”,“蹲”,“循环”,“其他”];
%索引()和比较使用“= =”将按预期工作。
StepsS2.Action (1) = =“跳”% = true输出
%索引和{}比较使用“= =”将生成一个逻辑
%向量,但前提是大小匹配。
StepsS2.Action{1} ==“跳”%输出= [1 1 1 1]
StepsS2.Action{1} ==“运行”
%错误:数组已经为这个操作不兼容的大小。
%你也可以用“比较字符串”或“isequal”
比较字符串(StepsS2.Action (1),“跳”)% = true输出
比较字符串(StepsS2.Action {1},“跳”)% = true输出
另一个完全不同的选项设置
FaceColor
财产
“平”
然后使用
CData
属性栏对象。这个示例还展示了如何使用一个
开关
语句来做你想做的事。例如:
时间=小时(1:15)';
步骤=兰迪(1)100年,15日;
行动= [“跳”;“运行”;“蹲”;“循环”;“其他”];
Action =操作(randi(1) 5, 15日);
StepsS2 =表(时间、步骤、操作);
(StepsS2 b =酒吧。时间,StepsS2.Steps);
b。FaceColor =“平”;
为i = 1:长度(StepsS2.Time)
开关StepsS2.Action(我)
情况下“跳”
:b.CData(我)= (1 0 0);
情况下“运行”
:b.CData(我)= (1 1 0);
情况下“蹲”
:b.CData(我)= (0 1 1);
情况下“循环”
:b.CData(我)= (0 0 1);
否则
:b.CData(我)= (0 0 1);
结束
结束