2011-12-19 1 views
0

Предположим, что хотелось бы построить 2 комплекта данных с неравным числом элементовMATLAB бар группы с центром в указанном месте на оси х

X=[1.1 1.4 1.2 1.1]; 
Y=[1.4 1.4 1.1]; 

можно использовать boxplot

boxplot([X Y],[1 1 1 1 2 2 2]) 

построить они, однако нет такой функции для бара. т.е. я хотел бы построить баров для каждого значения X и каждого значения Y, но значения в X должны группироваться вместе и должны находиться вдали от баров в Y. В идеале В дополнение к группе, также хотелось бы для указания третьего параметра , где указывается, где на оси х должны быть центрированы полосы (например, в моем случае [2 11] - по одному значению для каждой группы).

У кого-нибудь есть такая функция? Я проверил matlabcentral и не нашел то, что искал. спасибо L

+0

Вы можете быть заинтересованы в моей функции [distributionPlot] (http://www.mathworks.com/matlabcentral/fileexchange/23661-violin-plots-for-plotting-multiple-distributions-distributionplot-m), который вращает гистограммы для X и Y. – Jonas

ответ

2

Что-то вроде этого?

X=[1.1 1.4 1.2 1.1]; 
Y=[1.4 1.4 1.1]; 
a = [2 11] - 1; 

bar((1:numel(X))+a(1), X, 'b') 
hold on 
bar((1:numel(Y))+a(2), Y, 'r') 
hold off 
set(gca,'XTickMode','auto') 
legend({'X','Y'}) 
+0

Большое спасибо за ваш ответ, это именно то, что я искал. –

1

Это просто хак, но это может быть достаточно хорошо для начинающих:

X = [1.1 1.4 1.2 1.1] 
Y = [1.4 1.4 1] 
Y(end+1) = NaN 
bar([X; Y]) 

Если вы хотите изменить интервал, вы можете играть с местоположениями NaN лет.

enter image description here

+0

The NaN трюк очень полезен. благодаря –