3

x軸に時間をプロットするのに問題があります。ラベルが重なっています。下記参照:

プロット

これは私のコードです:

time=datenum(0,0,0,0,0,timeinseconds);
labs=1:10:length(time);

figure(3);
plotyy(time,xvalue,time,dens);
datetick('x','HH:MM');
set(gca,'XTick',time(labs),'XTickLabel',time(labs)); 
legend('xval','CDF');
title('Crash on Oct.10 2008 at 15:59pm');
xlabel('Time');

まず、なぜラベルが古いものと重なっているのですか?次に、ラベルを90度回転させるにはどうすればよいですか?ラベルを回転させるために他のいくつかのMATLAB関数を試しましたが、時間形式のラベルに取り組むことができるものはないようです。

4

1 に答える 1

3

呼び出して 2 つのオブジェクトplotyyを作成します。axisオーバーラップの問題は、おそらく、これらの軸の 1 つのセットのみを変更し、もう 1 つのセットは最初に設定されたままにしておくという事実から発生します。

1 つのオプションは、次の方法で呼び出すときに、作成された軸の両方を処理することですplotyy

[AX, H1, H2] = plotyy( time, xvalue, time, dens);

ここでの最初のオプションは、妥当性を次のようAXに変更して、 handler の配列に含まれる両方の軸を設定することです。'XTick'

set( AX(1), 'XTick', time(labs), 'XTickLabel', time(labs));
set( AX(2), 'XTick', time(labs), 'XTickLabel', time(labs));

ただし、2 番目の軸のラベルを空のままにして、上記の 2 行目を置き換えるオプションもあります。

set( AX(1), 'XTick', time(labs), 'XTickLabel', time(labs));
set( AX(2), 'XTick', time(labs), 'XTickLabel', []);

plotyyUsing Multiple X- and Y-Axesの公式ドキュメントは、さらに役立ちます。


そこでの例、つまりplotyy のドキュメントを見ると、次のようになります。

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');

前に行ったように、 だけを変更してみてくださいAX(2)。これは、次のように記述したものと同等ですgca

set(AX(2),'XtickLabel',1:0.1:20)

同じ重複エラーが発生することがわかります。

ラベルを 90 度回転させることに関しては、残念ながら現在 Matlab ではサポートされていません。ただし、FileExchange で利用可能なパッケージの 1 つを使用して、おそらくそれを行うことができます。xticklabelrotateまたはRotate Tick Labelのいずれかが 1 つである可能性があります。

于 2012-07-19T22:32:36.697 に答える