Plot data Excel sheet

3 views (last 30 days)
AHMED FAKHRI
AHMED FAKHRI on 9 Apr 2021
Commented: Soumya Paliwal on 9 Apr 2021
Hi
I have the attached Excel sheet, and I want to plot the years from 2022 to 2050 on the x-axis.
On the y-axis, I want to plot the cumulative emissions for each year above.For instance, the code should add any emission generated for the same year such that the cumulative is avaialble for each year.
Can you help please? thanks

Accepted Answer

Soumya Paliwal
Soumya Paliwal on 9 Apr 2021
The following script should help you with the problem:
% Read from the excel file
rawData = readmatrix('data.xlsx');
% Find unique years
uniqueYears = unique(rawData(:,1));
cumulativeValues = zeros(length(uniqueYears),1);
mapping = containers.Map(uniqueYears,cumulativeValues);
% Find cumulative eemissions for each year
for i=1:length(rawData)
mapping(rawData(i,1)) = mapping(rawData(i,1))+rawData(i,2);
end
plot_uniqueYear = mapping.keys;
plot_cumulativeValues = mapping.values;
bar(cell2mat(plot_uniqueYear),cell2mat(plot_cumulativeValues));
xlabel('Years');
ylabel('CUmulative Emissions');
  2 Comments
AHMED FAKHRI
AHMED FAKHRI on 9 Apr 2021
Many thanks that works, thanks for your help.
One last thing please, I need to add the value of the previous year always with the next so they become linear
So 2022 in x axis, then 2022+2023 in the (2023) year x-axis, and so on.
Similar to the below part in this image shaded in 'yellow'
Soumya Paliwal
Soumya Paliwal on 9 Apr 2021
You can add a small code snippet for this. Please refer to the following script:
rawData = readmatrix('data.xlsx');
uniqueYears = unique(rawData(:,1));
cumulativeValues = zeros(length(uniqueYears),1);
mapping = containers.Map(uniqueYears,cumulativeValues);
for i=1:length(rawData)
mapping(rawData(i,1)) = mapping(rawData(i,1))+rawData(i,2);
end
plot_uniqueYear = mapping.keys;
%%%%% new code snippet %%%%%
for i=2:length(plot_uniqueYear)
mapping(plot_uniqueYear{i}) = mapping(plot_uniqueYear{i}) + mapping(plot_uniqueYear{i-1});
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
plot_cumulativeValues = mapping.values;
bar(cell2mat(plot_uniqueYear),cell2mat(plot_cumulativeValues));
xlabel('Years');
ylabel('Cumulative Emissions');

Sign in to comment.

More Answers (0)

Tags

Products


Release

R2018b

Community Treasure Hunt

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

Start Hunting!