MATLAB bar() error: 'Unrecognized option "var" with custom variable names
MATLAB bar() error: 'Unrecognized option "var" with custom variable names
我正在编写更长的脚本,用于在 Matlab 中绘制一些条形图。当满足适当的条件时,我想设置自己的条形颜色。我在一个情节中有 30 个酒吧。这是一般背景,我不会在这里粘贴这段长代码,而是创建较短的代码来说明我正在努力解决的一个特定问题。出于某种原因,MATLAB 中的 bar() 函数不允许使用自定义变量来指示需要绘制哪个图,例如在本例中,re-colored.
这是我准备的示例脚本:
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()
函数才会出现这个问题。有人知道如何解决吗?
在此先感谢您的帮助!
大马
不要使用像 cond_1
和 cond_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)
我正在编写更长的脚本,用于在 Matlab 中绘制一些条形图。当满足适当的条件时,我想设置自己的条形颜色。我在一个情节中有 30 个酒吧。这是一般背景,我不会在这里粘贴这段长代码,而是创建较短的代码来说明我正在努力解决的一个特定问题。出于某种原因,MATLAB 中的 bar() 函数不允许使用自定义变量来指示需要绘制哪个图,例如在本例中,re-colored.
这是我准备的示例脚本:
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()
函数才会出现这个问题。有人知道如何解决吗?
在此先感谢您的帮助! 大马
不要使用像 cond_1
和 cond_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)