MATLAB bar () ошибка: 'Нераспознанная опция "var" с именами пользовательских переменных - PullRequest
2 голосов
/ 03 апреля 2019

Я пишу более длинный скрипт для построения некоторых гистограмм в Matlab.Я хочу установить свои собственные цвета полос, когда соблюдаются надлежащие условия.У меня 30 баров на одном участке.Это общий фон, я не буду вставлять сюда этот длинный код, вместо того, чтобы создавать более короткий код, только чтобы проиллюстрировать одну конкретную проблему, с которой я борюсь.По какой-то причине функция bar () в MATLAB не позволяет использовать пользовательские переменные, чтобы указать, какой график должен быть, например, в этом случае, перекрашен.

Вот пример сценария, который я подготовил:

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

1 Ответ

1 голос
/ 03 апреля 2019

Не используйте имена переменных, такие как 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)
...