В MATLAB R2017a bar(...,'hist')
использует гистограмму более старого стиля, не используя графические объекты Bar
, но используя более низкоуровневые графические объекты Patch
.(Я указываю номер версии, потому что это не упомянуто в документации, поэтому возможно, что более новая версия делает это по-другому.)
Мне удалось изменить расположение вершин для этих Patch
объекты для сдвига баров, увеличивая пространство внутри групп и уменьшая пространство между группами.По умолчанию панели внутри групп соприкасались с помощью опции 'hist'
.
x = rand(10,2);
hBar = bar(x,'hist');
v = hBar(1).Vertices;
v(:,1) = v(:,1) - 0.1; % shift x locations left
hBar(1).Vertices = v;
v = hBar(2).Vertices;
v(:,1) = v(:,1) + 0.1; % shift x locations right
hBar(2).Vertices = v;
Изменить код выше для более тонкой настройки должно быть относительно легко.Обратите внимание, что каждая полоса использует 5 вершин.В случае 2 баров, левый имеет круглые значения справа, а правый имеет круглые значения слева.Вы можете идентифицировать эти значения через mod(v(:,1),1)==1
.Но больше баров это не удержит.Может быть, самый простой подход - отдельно настроить значения v(ii:5:end,1)
, для ii от 1 до 5.