颜色编码的条形图

11视图(30天)
吉莉安穆雷
吉莉安穆雷 2021年7月6日
编辑: dpb 2021年7月9日
我有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
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);
结束
结束
8的评论
dpb
dpb 2021年7月9日
编辑:dpb 2021年7月9日
之前的背景下,这只是其中的一个ca 2017;有反应早在2014年的答案;如果去谷歌组和搜索下“cssm”新闻组档案,它会回到他们的档案,可能……
2014年已经指出有一个酒吧的标签应该是一个内置的可写属性栏,不需要这样的阴谋诡计虽然我提交的增强请求和b - h ^ ^ h抱怨酒吧()和建议这样回去很久,很久以前,一些早期的w / MATLAB。然后,再次拿起MATLAB相当严重的过渡到自由职业者,而不是通过咨询公司在2000年开始十字军然后直到最后放弃了失败…

登录置评。

更多的答案(0)

类别

找到更多的在离散数据块帮助中心文件交换

下载188bet金宝搏


释放

R2020a

社区寻宝

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

开始狩猎!