2013-03-25 7 views
2

У меня есть два вектора c и d, гистограмма которых мне нужно строить рядом друг с другом на той же фигуре в Matlab. когда я делаю hist (c); держаться; hist (d) масштаб меняется, и я не вижу гистограммы вектора c. Где я иду не так? Любая помощь будет оценена.Построить гистограмму бок о бок в Matlab

ответ

1

Вы можете использовать axis([xmin xmax ymin ymax]) для управления осью x и y и выбрать диапазон, который отобразит обе гистограммы. В зависимости от того, как вы хотите, чтобы ваш график выглядел, вы также можете попытаться использовать nelements = hist(___), чтобы получить количество элементов в каждом ящике, а затем построить их с помощью bar(x,nelements) для управления расположением каждого бара.

3

Если вы хотите, чтобы два быть на том же рисунке, вы можете попробовать корректировки X и Y ограничения в соответствии с вашими потребностями (попробуйте help xlim и help ylim). Однако построение их на одном рисунке может не всегда соответствовать вашим потребностям, так как конкретный участок должен, конечно, поддерживать определенный предел для X и Y.

Если отображая их бок о бок в разных фигурах было бы достаточно, однако, вы могли бы рассмотреть вопрос об использовании subplot():

>> A=[1 1 1 2 2]; 
>> B=[1 2 2 2 2]; 
>> figure(1); 
>> hold on; 
>> subplot(1,2,1); 
>> hist(A); 
>> subplot(1,2,2); 
>> hist(B); 

Результирующая фигура:

Обратите внимание, как различные пределы оси сохраняются.

0

hist предполагает, что вы хотите, чтобы разделить диапазон на 10 размеров бункеров равных по умолчанию. Если вы хотите использовать одни и те же ячейки для обеих гистограмм, сначала найдите диапазон ваших значений и создайте набор центров бинов (например, binCenters = linspace(min(x), max(x), 15)'), then call hist (x, binCenters) `.

0

Я использую гистограммы MATLAB довольно часто и написал этот маленький сценарий matlab для построения двух гистограмм (первый один красный и второй синий) на одном рисунке. Сценарий довольно прост, но важно то, что гистограммы должны быть сопоставимыми (то есть равномерно распределенные ячейки).

function myhist(varargin) 
% myhist function to plot the histograms of x1 and x2 in a single figure. 
% This function uses the same xvalue range and same bins to plot the 
% histograms, which makes comparison possible. 
if nargin<2 
    x1 = cell2mat(varargin(1)); 
    x2 = x1; 
    res = 100; 
elseif nargin==2 
    x1 = cell2mat(varargin(1)); 
    if length(cell2mat(varargin(2)))==1 
     res = cell2mat(varargin(2)); 
     x2 = x1; 
    else 
     x2 = cell2mat(varargin(2)); 
     res = 100; 
    end 
elseif nargin>2 
    x1 = cell2mat(varargin(1)); 
    x2 = cell2mat(varargin(2)); 
    res = cell2mat(varargin(3)); 
end 

if numel(x1)~=length(x1) || numel(x2)~=length(x2) 
    error('Inputs must be vectors.') 
    return 
end 

xrangel = max(min(x1),min(x2)); 
xrangeh = min(max(x1),max(x2)); 

x1_tmp = x1(x1>=xrangel & x1<=xrangeh); 
x2_tmp = x2(x2>=xrangel & x2<=xrangeh); 

xbins = xrangel:(xrangeh - xrangel)/res:xrangeh; 

hist(x1_tmp,xbins) 
hold on 
h = findobj(gca,'Type','patch'); 
set(h,'FaceColor','r','EdgeColor','w'); 
hist(x2_tmp,xbins) 
Смежные вопросы