2015-01-15 3 views
1

죄송이 질문은 다른 곳에서 답을했지만 나는 해결책을 찾는 데 문제가 있다면 ...matlab에 '히트 맵'

나는 scatterplot 데이터, xy, 색상 데이터 c (모든이 어느 벡터입니다).

x = rand(100,1); 
y = rand(100,1); 
c = rand(100,1)*50; 
scatter(x,y,c,'fill') 

enter image description here

그러나, 나는 대신 c이 크기 인 것을, 그 강도를 대표 할 수 있도록하는 'heapmap'로이를 표시 할 그것은 일종의 다음과 같습니다 를 enter image description here

나는 surf을 사용하고 싶지 않고 이처럼 2D가되고 싶습니다. 도움을 주셔서 감사합니다.

답변

3

원하는 표면 플롯을 얻으려면 [0,1] 영역을 보간해야합니다. "scatteredInterpolant"를 사용하면 꽤 잘 작동합니다.

N = 1000; 
[Xi,Yi] = meshgrid(linspace(0,1,N),linspace(0,1,N)); 
SI = scatteredInterpolant(x,y,c); 
Ci = SI(Xi,Yi); 
imagesc(Ci); 

결과가 100 개의 임의의 점으로 너무 매끄럽게 보이지는 않지만, 나는 그것이 당신이 찾고있는 것이라고 생각합니다! enter image description here

+1

또한 데이터가없는 경우에 대해 추정합니다. 오른쪽 아래 및 왼쪽 모서리를 예제로 봅니다. 외삽을 막고 보간 만 허용하기 위해서''Ci = griddata (x, y, c, Xi, Yi);''를 사용하는 것이 좋습니다. 그러나 질문에 명확하게 완전히 채워진 영역이 필요하므로 완벽하게 질문과 일치합니다. 데이터에 따라 축척을 유지하기 위해 플롯 부분은''imagesc (linspace (0,1, N), linspace (0,1, N), Ci)''를 읽습니다. 그 외 : 확실히 좋은 방법입니다. – Nras