Effacer les filtres
Effacer les filtres

Plotting statistics for a table

5 vues (au cours des 30 derniers jours)
Nazar Adamchuk
Nazar Adamchuk le 29 Oct 2021
Réponse apportée : Ive J le 29 Oct 2021
I have a complex table. An excerpt of it I have put into attachment. it has three regions and three variables.
My goal is to be able to plot such kind of grpah:
The blue markers are the maximum values of each variable per region, the green ones - the minimum values of each variable per each region, the black bar - standard deviation.
So far I have:
locmean = varfun(@mean,Local_Mat_Data,...
{'LocFatigLim_MIN', 'LocSlop_MIN', 'LocCycLim_MIN'},...
locstd = varfun(@std,Local_Mat_Data,...
{'LocFatigLim_MIN', 'LocSlop_MIN', 'LocCycLim_MIN'},...
locmin = varfun(@min,Local_Mat_Data,...
{'LocFatigLim_MIN', 'LocSlop_MIN', 'LocCycLim_MIN'},...
locmax = varfun(@max,Local_Mat_Data,...
{'LocFatigLim_MIN', 'LocSlop_MIN', 'LocCycLim_MIN'},...
Then I have somesow plot all data of this four tables nicely in three plots into the form of the graph that I have provided in the post. Do you have any alegand solution of plotting the graph?

Réponse acceptée

Ive J
Ive J le 29 Oct 2021
Try this, but note that your variables are highly skewed, so you should try boxplot or boxchart (median and IQR instead of mean and SD).
tab = load('example.mat').Local_Mat_Data;
t = groupsummary(tab, 'Region', {'mean', 'min', 'max', 'std'});
capsz = 20;
linew = 1.5;
hold on
plot(t.Region, t.mean_LocCycLim_MIN, 'Marker', '_', 'LineStyle', 'none', 'LineWidth', linew, 'Color', 'k', 'MarkerSize', capsz)
plot(t.Region, t.min_LocCycLim_MIN, 'Marker', '_', 'LineStyle', 'none', 'LineWidth', linew, 'Color', 'g', 'MarkerSize', capsz)
plot(t.Region, t.max_LocCycLim_MIN, 'Marker', '_', 'LineStyle', 'none', 'LineWidth', linew, 'Color', 'b', 'MarkerSize', capsz)
errorbar(t.Region, t.mean_LocCycLim_MIN, t.std_LocCycLim_MIN,'.','Color', 'k', 'LineWidth', linew, 'CapSize', capsz)
h = gca;
h.YGrid = 'on';
h.GridAlpha = 0.5;
h.XLim = [min(tab.Region) - 1, max(tab.Region) + 1];
h.XTick = t.Region;
h.XTickLabel = "Region " + h.XTick;
title('LocCycLim_MIN', 'Interpreter', 'none')
h.Box = 'on';

Plus de réponses (0)


En savoir plus sur Graphics Object Identification dans Help Center et File Exchange


Community Treasure Hunt

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

Start Hunting!

Translated by