Plotting a bar graph with a large x-axis

26 views (last 30 days)
Brenden Sluyter on 27 Mar 2020
Edited: Ajay Pattassery on 7 May 2020
I'm trying to plot a bar graph with a very large x-axis. When I do this, it makes my data at the end close to zero look very skinny. Below is what I want it to look like (graph taken from TestLab) and what Im getting in matlab. Is there a way to shrink the x-axis to only the values I need?  Mohammad Sami on 27 Mar 2020
If your bar charts are at discrete values, one way is to convert your x-axis into a categorical variable. Then plot against the categorical variable.

Ajay Pattassery on 7 May 2020
Edited: Ajay Pattassery on 7 May 2020
Here assume you are plotting the bar plot with x and y as defined below.
x = [1 100 100000];
y = [1 2 4];
bar(x,y)
You will get an output similar to the one you have got above due to the huge scale of the x-axis.
For that, define x as just integers from 1 to number of elements in your x values. Then using xticklabels, define the tick labels.
xModified = 1:length(x)
bar(xModified,y)
xticklabels(gca,{'1','100','100000'});
Alternatively, You can use a logarithemic scale on the x axis and then use xticks and xlabels to label the x axis. This makes bar to be placed at the relative location with respect to the x value.
y = [1 2 4];
x = [1 100 100000];
bar(log(x),y);
xticks(log(x))
xticklabels([{'1'},{'100'},{'1000000'}])

R2019a

Community Treasure Hunt

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

Start Hunting!