Effacer les filtres
Effacer les filtres

Plot data Excel sheet

1 vue (au cours des 30 derniers jours)
AHMED FAKHRI
AHMED FAKHRI le 9 Avr 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

Réponse acceptée

Soumya Paliwal
Soumya Paliwal le 9 Avr 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 commentaires
AHMED FAKHRI
AHMED FAKHRI le 9 Avr 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 le 9 Avr 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');

Connectez-vous pour commenter.

Plus de réponses (0)

Tags

Produits


Version

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by