首页 > 解决方案 > MATLAB bar() 错误:“带有自定义变量名称的无法识别的选项“var”

问题描述

我正在编写更长的脚本来在 Matlab 中绘制一些条形图。当满足适当的条件时,我想设置自己的条形颜色。我在一个情节中有 30 个酒吧。这就是一般背景,我不会在这里粘贴这么长的代码,而是创建较短的代码只是为了说明我正在努力解决的一个特定问题。由于某种原因,MATLAB 中的 bar() 函数不允许使用自定义变量来指示需要重新着色的绘图,例如在本例中。

这是我准备的示例脚本:

cond_1 = 10;
cond_2 = 8;
i = 1;

cond_SD_1 = 2;
cond_SD_2 = 3;

z = [cond_1, cond_2];
zz = [cond_SD_1, cond_SD_2];


hold on

newName=sprintf('cond_%d',i); 

title(newName);

bar(1, cond_1, 'FaceColor', 'Red','LineWidth',2)   
bar(2, newName, 'FaceColor', 'Blue','LineWidth',2)

errorbar(z,zz,'color',[.44 .44 .44],'linestyle','none','linewidth',2), grid on, grid minor, box off,         
hold off

所以假设我们只想有两个条,就像上面的例子一样。我们需要使用自定义变量来告诉bar()我们要更改哪个栏。我们在这一行中创建了变量(newName=sprintf('cond_%d',i);)- 它以cond_1. 当我们这样调用时bar()bar(1, cond_1, 'FaceColor', 'Red','LineWidth',2)一切正常,但是当我们想使用bar(2, newName, 'FaceColor', 'Blue','LineWidth',2)它时,它会出错Unrecognized option "cond_1".。我还在那里添加了title()函数,它没有这个问题并且完全理解 char 变量。title(newName);将我们的自定义变量名称newName正确设置为标题。这个方法我以前用过几次,好像只有bar()函数才会出现这个问题。有谁知道如何解决它?

在此先感谢您的帮助!BM

标签: matlabplotmatlab-figure

解决方案


不要使用变量名cond_1cond_2. 相反,您的阵列z就是您所需要的。z(i)是您想要以不同方式着色的元素。让我们以一个稍大的数据集为例:

z = 9*rand(1,10) + 9;
zz = 2*rand(1,10) + 1;
k = find(z>14) % the bars to color red
x = 1:10;

hold on
bar(x,z, 'FaceColor', 'Blue','LineWidth',2)   
bar(x(k),z(k), 'FaceColor', 'Red','LineWidth',2)
errorbar(x,z,zz, 'color',[.44 .44 .44],'linestyle','none','linewidth',2)

推荐阅读