Вы можете добавить интервал между вашими группами столбцов, указав дополнительный ввод для bar3
, указывающий позиции, в которых нужно разместить столбцы столбцов вдоль оси y. Вы также можете нанести дополнительный текст на свои оси, используя функцию text
:
Z = rand(9, 5); % Some random sample data
[r, c] = size(Z); % Size of Z
Y = [1 2 3 5 6 7 9 10 11]; % The positions of bars along the y axis
C = mat2cell(kron(Z, ones(6, 4)), 6*r, 4.*ones(1, c)).'; %' Color data for Z
hBar = bar3(Y, Z); % Create the bar graph
set(hBar, {'CData'}, C); % Add the color data
set(gca, 'YTickLabel', {'x1' 'x2' 'x3'}); % Modify the y axis tick labels
view(-70, 30); % Change the camera view
colorbar; % Add the color bar
text(-2, 2, 'grid1'); % Add "grid1" text
text(-2, 6, 'grid2'); % Add "grid2" text
text(-2, 10, 'grid3'); % Add "grid3" text
Обратите внимание, что вам, возможно, придется настроить значения x и y ваших текстовых объектов, чтобы они отображались в том месте, где вы хотите, для данного вида камеры, который вы выбрали.
EDIT:
Если вы также хотите отобразить значения над каждой полосой, вы можете сделать это, добавив следующее к приведенному выше коду:
hText = text(kron((1:c).', ones(r, 1)), ... %' Column of x values
repmat(Y(:), c, 1), ... % Column of y values
Z(:)+0.05, ... % Column of z values
num2str(Z(:)), ... % Text strings
'HorizontalAlignment', 'center'); % Center the strings
Следует отметить, что слишком много зарисованного текста становится немного грязным, поскольку часть текста будет перекрываться или скрываться за решеткой. Текст также немного избыточен, поскольку цвет столбцов действительно предназначен для отображения значений.