How to make the figure as attached?

Illustration
Devendra - 2024-04-05T21:11:48+00:00
Question: How to make the figure as attached?

I want to make the same figure with little different dates using matlab. Figure is attached. Please suggest me how to make it.

Expert Answer

Profile picture of Prashant Kumar Prashant Kumar answered . 2025-11-20

i understand that you are to make a plot same as above mentioned figure. This can be done by creating a bar plot in MATLAB with respect to the y-axis (i.e., horizontal bars) and having different legends for each group of bars can be achieved using the barh function for horizontal bar plots, and grouping the data appropriately. Please find the below attached code for the same:

% Sample range data for 3 categories, each with start and end values for 4 groups
dataStart = [1, 2, 3, 4; 4, 5, 6, 7; 7, 8, 9, 10]; % Start of range for each group
dataEnd = [2, 3, 4, 5; 5, 6, 7, 8; 8, 9, 10, 11]; % End of range for each group

% Categories for the y-axis
categories = 1:3; % Numeric categories for plotting

% Group labels (for legend)
groups = {'Group 1', 'Group 2', 'Group 3', 'Group 4'};
figure; % Create a new figure
hold on; % Hold on to plot multiple lines

[numCategories, numGroups] = size(dataStart);

% Colors or markers for each group - adjust as needed
colors = lines(numGroups); % Generate distinct colors

% Array to hold plot handles for legend
h = zeros(1, numGroups);

% Plotting ranges
for i = 1:numGroups
    % Plot each range for the group, only need to add one line per group to the legend
    for j = 1:numCategories
        % Plot each range as a line segment
        lineHandle = plot([dataStart(j,i), dataEnd(j,i)], [categories(j), categories(j)], ...
                          'Color', colors(i,:), 'LineWidth', 10);
        if j == 1
            % Save the handle for the first line of each group for the legend
            h(i) = lineHandle;
        end
    end
end

% Adjusting the plot
set(gca, 'ytick', categories, 'yticklabel', arrayfun(@num2str, categories, 'UniformOutput', false));
ylim([0, numCategories + 1]); % Adjust y-axis limits

% Create legend using handles to the first line of each group
legend(h, groups, 'Location', 'northeastoutside');
xlabel('Value'); % Label for the x-axis
ylabel('Category'); % Label for the y-axis
title('Range Representation for Each Category and Group'); % Title for the plot

hold off; % No more plots on this figure

 


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!