2016-08-22 3 views
0

스케일링 나는 모두 22250-에 의해-54, 나는 hist3imagescx(:,n)y(:,n)n = 1:54에 대한 밀도 플롯을 만들기 위해 사용하는 것을 시도하고있다 데이터 xy의 2 개 배열을 가지고있다.matlab에 Hist3/Imagesc 축

values2 = hist3([x(:) y(:)],[round(max(x)) round(max(y)) ]); 

고유 한 축 범위를 얻기 위해 54 개 xy 각각의 값에 대한 음모 내 인수로 사용하고 그것을 잘 작동합니다 :

어디 imagesc(values2)을 사용하고 있습니다. 그러나 I가 xy 단부까지의 54 개 칼럼마다 values2 같은

values2 = hist3([x(:) y(:)],[50 50 ]); 

와 실제 값을 정수 값을 고정 된 장소 때, [50 50] 파라미터를 확장하기 또는 I를 사용하는 경우 [100 100 ]이고 각 xy에 대한 실제 값을 반영하지 않습니다. 축 x,y 범위를 고정하고 고정 된 축 범위에서 실제 값을 유지하려면 어떻게해야합니까?

나는 imagesc(values2) 호출 후 별도의 호출에 xlimylim를 사용하여도 시도하고이 중 하나가 작동하지 않습니다 - 그것은 매우 작은 영역에서 내 데이터을 나타내는 이미지 주변 공백을 많이 떠난다.

도움 주셔서 감사합니다.

본인은 아래 링크에서 응답 내가 지금있는 곳에 도착하려면 "확인"시도 : Scatter plot with density in Matlab

+0

는 X 축 및 Y 축 값 또는 데이터의 범위는 동일하지 않다. x 변수는 풍속이고 y 변수는 온도입니다. 고마워요, – user2100039

+0

x 변수의 예상 범위는 0에서 30 (풍속) 일 수 있으며 온도가 예상되는 모든 54 개의 경우를 포함 할 수있는 변수 범위는 -20에서 +40 일 수 있습니다. 고맙습니다. – user2100039

+0

안녕하세요, 현재 코드가 작동하는 것과 같은 방식으로 작동합니다. 새로운 플롯마다 x 및 y 축 범위가 변경됩니다. 이것은 내가 필요한 것이 아닙니다. 나는 n = 1:54 인 위의 각 경우에 대해 동일하거나 고정 된 x 및 y 축 범위와 데이터의 확산을 비교하려고합니다. 감사! – user2100039

답변

0

를 사용하여 answer you referenced 당신은 쓸 수 있습니다 : 당신이 얻을 수

% some arbitrary data: 
x = randi(30,30,54); 
y = randi(61,30,54)-21; 

% constant values for every n: 
nbins = [round(range(y(:))) round(range(x(:)))]+1; 
x_lim = [min(x(:)) max(x(:))]; 
y_lim = [min(y(:)) max(y(:))]; 

% plotting: 
for n = 1:9 
    [values2, centers] = hist3([x(:,n) y(:,n)],nbins); 
    subplot(3,3,n) % this is just for compact demonstration 
    h = imagesc(centers{:},values2.'); 
    title(num2str(n)) 
    xlim(x_lim) % keeping the x-axis limits constant 
    ylim(y_lim) % keeping the y-axis limits constant 
    axis xy 
end 

주 이 예제에서와 같이 x(:,n) 또는 y(:,n)의 데이터가 더 작은 범위 인 경우 y(:)x(:,n) 인 플롯의 영역을 선택합니다. 줄 것이다

: imagesc hist

+0

나는 당신의 해결책을 시도했다. 첫 음모는 괜찮아. 루프의 두 번째 플롯 또는 n == 2 일 때 values2 변수 "인덱스가 행렬 크기를 초과합니다"에 오류가 발생합니다. 당신의 생각? 또한 축 레이블 또는 x 및 y 눈금 레이블은 정수가 아닌 십진 형식입니다. 고마워, – user2100039

+0

루프없이 오류없이 실행하면 오류를 만드는 줄을 복사 할 수 있습니까? 라벨에 대해서는'sprintf'를 사용하여 편집 할 수 있습니다. 답변에 추가 하겠지만, 당신이보고 싶은 것이 확실하지 않습니다 – EBH

+0

values2 = hist3 ([y (:, n) x (:, n) ], [round (range (y (: n))) round (range (x (: n)))]); – user2100039