2013-08-26 3 views
7

hist3()関数を使って点の密度をプロットします。グリッドを作成し、各グリッド内の点の数を見つけてプロットを作成します。しかし、プロット上の色は離散的です。 この分布をスムーズにする、つまりある色から別の色にスムーズに移行するオプションがありますか?今グリッドのすべてのセルは、笑顔から黄色に異なる色を持っており、分布は明らかではありません。hist3プロットをスムーズにすることは可能ですか?

私は次のコードを使用します。

axis equal; 
colormap(jet); 
n = hist3(final',[40,40]); 
n1 = n'; 
n1(size(n,1) + 1 ,size(n,2) + 1) = 0; 
xb = linspace(min(final(:,1)),max(final(:,1)),size(n,1)+1); 
yb = linspace(min(final(:,2)),max(final(:,2)),size(n,1)+1); 
pcolor(xb,yb,n1); 

ありがとうございます。グリッド線を取り除くために

+1

チェックアウトである[ 'カラーマップ()'](http://www.mathworks.co.uk/help/matlab/ref/colormap。 html)。 – Oleg

+0

私は夏のカラーマップを使用します。私も他のカラーマップを試しましたが、それは助けになりませんでした。私はこれらの鳥類の鳥類を見たくはないが、ある細胞から別の細胞へと滑らかに移行したい。 – bordart

+0

[interp2](http://www.mathworks.fr/fr/help/matlab/ref/interp2.html)を使用して、ヒストグラムから補間サーフェスを作成し、表示します。 – Bentoy13

答えて

7

あなたはmatlab file exchangeからgridfit機能を使用することもできます。滑らかな効果は、補間(より多くの点をプロットする)と使用可能な色を完全に使用すること(ここではcolormap jet)の両方からもたらされます。 edgecolornoneに設定され、黒い線が削除されることに注意してください。

ここでは、hist3(20×20行列)の出力を取り込み、それを補間(100×100)します。次に、surfを使用してサーフェスをプロットします。さらに、camlightオプションのコメントを解除することもできます。

final = randn(1000,2)'; 
n = hist3(final',[20,20]); %binning 
figure('Color','w'); 

%your code with pcolor 
subplot(1,2,1); 
axis equal; 
colormap(jet); 
n1 = n'; 
n1(size(n,1) + 1 ,size(n,2) + 1) = 0; 
xb = linspace(min(final(:,1)),max(final(:,1)),size(n,1)+1); 
yb = linspace(min(final(:,2)),max(final(:,2)),size(n,1)+1); 
pcolor(xb,yb,n1) 


%density with gridfit function 
subplot(1,2,2); 
nb_interp_point = 100; 
[x,y] = meshgrid(1:size(n,1),1:size(n,2)); 
zgrid = gridfit(x(:), y(:), n, nb_interp_point, nb_interp_point); 
surf(zgrid,'EdgeColor','none') 
set(gca,'YDir','reverse'); 
view(-90,90); 
% camlight right 
% lighting phong 

ここ結果

enter image description here

+0

ありがとうございました。これは私がやりたいことです。 – bordart

3

は、以下の使用:

hchild=get(gca,'children'); 
set(hchild,'edgecolor','none') 

カラーマップをM×3(RGB)アレイです。あなたは自分でcolormapを自由に作成することができます。たとえば、次の例のように、使用しているcolormapの範囲を狭めることができます。

cmap=colormap(summer); 
range = [40:64]; % <-- here I am using a 64 element colorspace 
       % and narrowing the selection to the upper range 
nc = size(cmap,1); 

range = [range(1):(range(end)-range(1))/(nc-1):range(end)]; 
cmap(:,1)=interp1([1:nc],cmap(:,1),range); 
cmap(:,2)=interp1([1:nc],cmap(:,2),range); 
cmap(:,3)=interp1([1:nc],cmap(:,3),range); 
colormap(cmap) 
+0

残念ながら私はこのコードを動作させることはできません。それを確認していただけますか? – bordart

+0

@artalexan修正済み!逃した-1 ... –

+0

ありがとうございます。これは本当に便利です! p.s.これらの括弧は必要ではなかったので、削除しました。 – bordart

関連する問題