Slider which controls a bar plot

41 views (last 30 days)
Hello everyone,
i would like to get a slider which controls a bar plot.
so i got this, but instead of the gauge i would like to have a bar plot which is changing while i move the slider.
at the end i need 4 - 5 different bars which are chancing individually depending on different functions. and there is a same variable which is in each functions and this should be the input from the slider.
function sliderchanging
% Create figure window and components
fig = uifigure('Position',[100 100 350 275]);
cg = uigauge(fig,'Position',[100 100 120 120]);
cg.MajorTicks = [0:10:100];
cg.MajorTickLabels = {'0','10','20','30','40','50','60','70','80','90','100'};
sld = uislider(fig,...
'Position',[100 75 120 3],'ValueChangingFcn',@(sld,event) sliderMoving(event,cg));
% Create ValueChangingFcn callback
function sliderMoving(event,cg)
cg.Value = event.Value;
Karl Philip Hahne
Karl Philip Hahne on 8 Feb 2021
The slider should affect the bar graphs. For example, I move the slider from 0 to 50 and the bar goes up from 0 to 50.
The goal is to visaulize costs. I fly with an airplane a detour of 50km,100km,200km (values of the slider) and thereby additional costs arise by higher kerosene consumption, personnel costs, CO2 costs etc.(these should become the bars) I move the slider to 50 km detour, thereby the following costs arise

Sign in to comment.

Accepted Answer

Adam Danz
Adam Danz on 8 Feb 2021
Edited: Adam Danz on 7 Mar 2021
Here's a demo. The key is to set bh (the bar handle) and initialValues (the initial y-values of the bars) prior to setting the slider callback function.
uif = uifigure();
uax = uiaxes(uif,'Position', [20 100 500 300]);
initialValues = [50 100 150];
bh = bar(uax, initialValues);
grid(uax, 'on')
uis = uislider(uif,'Position',[50 50 150 3],'Value',0, 'Limits', [0,500], 'MajorTicks', 0:100:500, 'MinorTicks', []);
uis.ValueChangedFcn = @(h,~)set(bh, 'YData', initialValues + h.Value);
Karl Philip Hahne
Karl Philip Hahne on 8 Mar 2021
this is really good. i think i can work with this. Thanks first!

Sign in to comment.

More Answers (1)

Mario Malic
Mario Malic on 5 Feb 2021
Edited: Mario Malic on 5 Feb 2021
Karl Philip Hahne
Karl Philip Hahne on 8 Feb 2021
so this is what i have till now.
i have the figure, axes und the slider in the same window but how do i get the bar chart in the same window as well? do i need something like bar(x, fig)??
fig = uifigure;
ax = uiaxes(fig);
x = [1 2 3 4 5]
sld = uislider(fig)

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by