Изменение цвета в сгруппированном столбчатом графике в Matlab

#matlab #plot #bar-chart

#matlab #график #гистограмма

Вопрос:

Это моя матрица

 n =

   46.4000   51.8000
   44.8000   44.9000
   67.2000   85.0000
   54.4000   60.3000
   43.2000   57.0000
   51.2000   68.0000
   75.2000   76.0000
   44.8000   51.3000
   67.2000   72.2000
   70.4000   71.2000
  

Если я построю его как bar (n, ‘grouped’), он покажет

Столбчатый график

Я хочу изменить цвета по умолчанию вместо синего красного, я хочу зеленый и желтый

Я пробовал так bar(n, ‘grouped’,’g’,’y’) Но он показывает
второй график

может ли кто-нибудь мне помочь?

Ответ №1:

Вы можете использовать 'FaceColor' свойство дескрипторов для объектов:

 n=[46.4000   51.8000
   44.8000   44.9000
   67.2000   85.0000
   54.4000   60.3000
   43.2000   57.0000
   51.2000   68.0000
   75.2000   76.0000
   44.8000   51.3000
   67.2000   72.2000
   70.4000   71.2000];
bar_handle = bar(n,'grouped');
set(bar_handle(1),'FaceColor',[0,1,0])
set(bar_handle(2),'FaceColor',[1,1,0])
  

В документации объясняется, как установить цвета здесь.

Ответ №2:

Для matlab2014b и выше

Использование set , похоже, больше не работает с matlab2014b и выдает сообщение ( Error using subsindex: Function 'subsindex' is not defined for values of class 'matlab.graphics.chart.primitive.Bar'. ).

Попробуйте сделать это непосредственно с помощью дескриптора:

 n=[46.4000   51.8000
44.8000   44.9000
67.2000   85.0000
54.4000   60.3000
43.2000   57.0000
51.2000   68.0000
75.2000   76.0000
44.8000   51.3000
67.2000   72.2000
70.4000   71.2000];

bar_handle = bar(n,'grouped');
bar_handle(1).FaceColor = 'r'
bar_handle(2).FaceColor = 'b'
  

Комментарии:

1. Это поведение отражает версии от R2014b и выше. Вероятно, вам следует сделать небольшую заметку, в которой говорится об этом, чтобы не путать людей, у которых есть версии от R2014a или меньше, поскольку эти версии все еще требуют использования set для изменения свойств графика.

2. С моим R2015b необходимо было добавить bar_handle(1).EdgeColor = 'r'; bar_handle(2).EdgeColor = 'b' после FaceColor.