Jackie
Jackie

Reputation: 73

How to show only the existing data points on x axis of bar graph in MATLAB?

I need to simple plot B vs. A as bar plot in MATLAB, but I don't want my x axis showing completely from 1 to 274. I only need to show the existing data point on my x axis, which can be done easily in Excel as in the image below. How can MATLAB do this?

enter image description here

A=[1    2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  18  20  25  27  29  37  40  42  43  48  73  204 242 274];
B=[30   15  5   9   5   6   3   3   2   1   4   1   1   1   1   1   2   1   1   1   1   1   1   1   1   1   1   1   1   1];

Upvotes: 3

Views: 1845

Answers (2)

chappjc
chappjc

Reputation: 30579

You need to set both 'XTick' and 'XTickLabel' axes properties:

bar(B);
set(gca,'XTickLabel',A)
set(gca,'XTick',1:numel(A));
xlim([0 numel(A)+1]);

Upvotes: 1

user2904596
user2904596

Reputation: 17

Here is an inelegant, but, nonetheless, working solution to your question:

x = [1,4, 6, 7]; % Your data
uni = unique(x)
yMax = length(find(x == mode(x))) + 1;
c = cell(1, length(uni));

c = strread(num2str(uni),'%s')

hist(1:length(uni));
axis([0 length(uni) 0 yMax])
set(gca, 'XTick', 1:length(uni));
set(gca, 'XTickLabel', c);

Basically, this plots the histogram as if the data were spread from 1 to the number of unique elements. Then, it sets the tick marks at each histogram value. Then, it labels each tick mark with the correct number.

Upvotes: 1

Related Questions