0

1 年のうち 2 年にわたるデータのプロットを作成するための次のコードがあります。

time = datenum('2008-04-17 02:00'):datenum('2009-11-24 12:27');
dateV = datevec(time);
for i = 1:length(time);
    DOY(i) = time(i) - datenum(dateV(i,1),0,0);
end
data = rand(length(time),1);
plot(time,data);
set(gca,'XTick',floor(time(1:50:end))','XTickLabel',floor(DOY(1:50:end))) 

x軸の目盛りが10の倍数、つまり110、160などの日番号であることを確認する方法を誰かが提案できますか.

追加セクション:

DateTime=datestr(datenum('2007-01-01 00:00','yyyy-mm-dd HH:MM'):1/24:...
    datenum('2011-12-31 23:00','yyyy-mm-dd HH:MM'),...
    'yyyy-mm-dd HH:MM');
time = datenum(DateTime,'yyyy-mm-dd HH:MM');

dateV = datevec(time);
for i = 1:length(time);
    DOY(i) = time(i) - datenum(dateV(i,1),0,0);
end
data = rand(length(time),1);
plot(time,data);

mydays = ~mod(floor(DOY),40);  %true for days that are multiples of 10
set(gca,'XTick',floor(time(mydays))','XTickLabel',floor(DOY(mydays))) 

Error using set
Values must be monotonically increasing

これは、床を取り除くことで修正できます。つまり、

set(gca,'XTick',time(mydays),'XTickLabel',floor(DOY(mydays))) 

しかし、太字のラベルが生成されます。これはなぜですか?

4

1 に答える 1

2

関数を使用して、N の倍数である日のインデックスを生成できmodます。この関数は、数値を N で割った余りを返します。

 mydays = ~mod(floor(DOY),10);  %true for days that are multiples of 10
 data = rand(length(time),1);
 plot(time,data);
 set(gca,'XTick',time(mydays),'XTickLabel',floor(DOY(mydays))) 

あなたの場合、10 の倍数ごとに x 軸のラベルが多くなりすぎるため、40 の倍数を試してみると、次のようになります画像

最後に、軸ラベルを変更して太字にしない場合は、次を使用できます。

set(gca, 'FontWeight', 'normal');

または同様に、サイズとフォントを変更できます。

set(gca, 'FontSize', 14, 'FontName', 'Calibri')

編集: 前のコードのタイプミスを修正し、ラベルのフォントの変更に関するメモを追加しました

于 2012-09-14T17:53:57.567 に答える