2016-07-21 5 views
1

私はプロットにMatlabを使用しています。Matlabのグリッド線を背景に移動するには?

figure; 
x = randn(2000,1); 
y = 1 + randn(5000,1); 
h1 = histogram(x,'FaceAlpha',0.1); 
hold on 
h2 = histogram(y,'FaceAlpha',0.1); 
grid on 

グリッド線は実際には背景ではありません。バーの上にグリッド線が表示されないように、それらを完全に背景に移動するにはどうすればよいですか?

答えて

2

グリッド線は、バックグラウンドでですが、プロットobjetcsは、いくつかの透明性('FaceAlpha'未満1)を持っているので、あなたはそれらを見ることができます。あなたが望むものを達成するために

、トリックは二回、各ヒストグラムをプロットすることである:最初の'FaceAlpha'セットを持つバージョンを1に、'Facecolor'白と'none'に等しい'Edgcolor'を、グリッド線をカバーします。通常のバージョンです。

figure; 
x = randn(2000,1); 
y = 1 + randn(5000,1); 
histogram(x,'FaceAlpha',1,'Facecolor','w','Edgecolor','none'); 
hold on 
histogram(y,'FaceAlpha',1,'Facecolor','w','Edgecolor','none'); 
h1 = histogram(x,'FaceAlpha',0.1); 
h2 = histogram(y,'FaceAlpha',0.1); 
grid on 
2

グリッド線は、背景にある程度のものです。まあ、ほとんど:オブジェクトが完全に不透明であると隠し、透明のときに表示されます(残念ながら、オブジェクトの背後にあるかのように表示されません。それが不透明なとき)。

あなたは、同じプロットを持つ2つの軸を作成することによって、MATLABをトリックすることができます。フォアグラウンドの軸はオフであり、透明なプロットがあり、背景の軸はグリッド線と不透明な白いオブジェクトです。

例:(私は私のPC上でMatlabの2013aを持っているように、私は古い構文を使用します)

x = randn(2000,1); 
y = 1 + randn(5000,1); 
hist(x); 
hold on 
hist(y); 
hs = findobj(gca, 'Type', 'patch') 
set(hs(2),'FaceAlpha',0.1) 
set(hs(1),'FaceAlpha',0.1) 
axis off 
ax_front = gca; 

ax_back = axes; 
hist(x); 
hold on 
hist(y); 
hs = findobj(gca, 'Type', 'patch') 
set(hs(1), 'faceColor', 'w') 
set(hs(2), 'faceColor', 'w') 
grid on 

axes(ax_front) 

別の方法としては、常に自分のグリッド線とを完全に制御を持っているために、独自のカスタム「グリッド線」関数を作成することができ、そのあなたのプロットの配置。

関連する問題