How to make the figure as attached?

1 回表示 (過去 30 日間)
Devendra
Devendra 2024 年 4 月 4 日
コメント済み: Devendra 2024 年 4 月 5 日
I want to make the same figure with little different dates using matlab. Figure is attached. Please suggest me how to make it.
  2 件のコメント
Gayatri
Gayatri 2024 年 4 月 4 日
Can you please elaborate more on the data used to generate the figure?
Stephen23
Stephen23 2024 年 4 月 4 日

サインインしてコメントする。

採用された回答

Avni Agrawal
Avni Agrawal 2024 年 4 月 4 日
Hi Devendra, 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
Please take a look at the horizontal bar graph documentation for better understanding: https://www.mathworks.com/help/matlab/ref/barh.html
I hope this helps!
  4 件のコメント
Devendra
Devendra 2024 年 4 月 4 日
Thank you for your kind suggestion. I could do it with the help of available help on mathworks. But I could not increase the length of horizontal bar till the end of right y axis. Please suggest me how to increase the length of horizonatl bars.
I appreciate your kind cooperation.
Deva
Devendra
Devendra 2024 年 4 月 5 日
Thanks for your kind help. Could you please suggest me how to stretch the march and april sowing bars graph till right y axis?
I want that april sowing bar and may sowing bar should start from april and may months and should be stretched till right y axis.
I am attaching the figure and request you to kindly have a look on it and suggest me how to get above mentioned factors into effect.
Deva

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchange2-D and 3-D Plots についてさらに検索

タグ

製品


リリース

R2024a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by