2

2 つの y ベクトルと 1 つの x ベクトルがある場合:

y1 = [0.1,0.2,0.5,0.6];
y2 = [0.3,0.4,0.7,0.8];
x = 1:length(y1);

異なるマーカーと異なる色を使用して、同じプロットにすべての情報をプロットするにはどうすればよいですか。私は次のことを試しました:

cols = {'k','r','b',[0,0.5,0]};
markers = {'s','o','d','v'};

for i = 1:4;
    plot(x(i),y1(i),markers{i},'color',cols{i},'MarkerEdgeColor',...
        cols{i},'MarkerFaceColor','w');
    hold on
end
ax1 = gca;
ax2 = axes('Position',get(ax1,'Position'),...
       'YAxisLocation','right','XColor','k','YColor','k');
linkaxes([ax1,ax2],'x'); 
for i = 1:4;
    plot(x(i),y2(i),markers{i},'color',cols{i},'MarkerEdgeColor',...
        cols{i},'MarkerFaceColor',cols{i},'Parent',ax2);
    hold on;  
end

しかし、これは最初のプロットを上書きするようです。ここでの私の目的は、最初の 4 つのポイント (y1) を、マーカーと色が定義された状態で描画することですが、マーカーの面は白で描画します。次に、同じ図に、y2 の値を持つ 2 番目の y 軸 (右側) を含めたいと考えていますが、今回は「cols」に従って色付けされたマーカー面を使用します。これどうやってするの?

添加:

plotyy を使用する場合

for i = 1:4;
    [ax,h1,h2] = plotyy(x(i),y1(i),x(i),y2(i));
    hold on
    set(h1,'linestyle','none','marker',markers{i},'MarkerEdgeColor',...
        cols{i},'MarkerFaceColor',cols{i});
    set(h2,'linestyle','none','marker',markers{i},'MarkerEdgeColor',...
        cols{i},'MarkerFaceColor','w');
    set(ax,{'ycolor'},{'k';'k'},{'xcolor'},{'k';'k'});
end

xaxis の値は正しく表示されません。これらは同じですが、プロット上で整列していません。

4

2 に答える 2

4

Matlab の組み込み関数 plotyy を使用できます

plotyy(X1,Y1,X2,Y2) は、左側に y 軸のラベルを付けて X1 と Y1 をプロットし、右側に y 軸のラベルを付けて X2 と Y2 をプロットします。

ここでその他のオプションを確認してください。

この例では、plot をプロット関数として使用して、2 つの数学関数をグラフ化します。2 つの y 軸を使用すると、データの相対値が大きく異なっていても、両方のデータ セットを 1 つのグラフに表示できます。

figure
x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
[AX,H1,H2] = plotyy(x,y1,x,y2,'plot');

「ホールドオン」を試している場合、これにより非同期軸が解決されます。

set(ax, 'XLim', [min(xaxis) max(xaxis)]);
set(ax(2),'XTick',[]);

ここに画像の説明を入力

于 2013-08-09T08:12:15.117 に答える
0

問題は、オーバーレイされたプロットの背景色が白 (および不透明度が最大) に設定されているため、下にあるものはすべて見えないことです。ステートメントax2 = ...

ax2 = axes('Position',get(ax1,'Position'),...
'YAxisLocation','right','XColor','k','YColor','k','color','none');

物事を修正する必要があります。

于 2013-08-09T11:09:09.580 に答える