我正在编写更长的脚本来绘制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
不要使用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)