0

matlab 時系列プロットを png として保存するときに問題が発生します。内部の matlab ウィンドウには、保存されたイメージの半分の xticks が表示されます。これにより、保存されたプロットで目盛りラベルがオーバーレイされます。

最小限のコードの例を次に示します。

data = (1:12);

time(1,:) = '10-Sep-2012 13:42:10';
time(2,:) = '10-Sep-2012 13:43:10';
time(3,:) = '10-Sep-2012 13:44:10';
time(4,:) = '10-Sep-2012 13:45:10';
time(5,:) = '10-Sep-2012 13:46:10';
time(6,:) = '10-Sep-2012 13:47:10';
time(7,:) = '10-Sep-2012 13:48:10';
time(8,:) = '10-Sep-2012 13:49:10';
time(9,:) = '10-Sep-2012 13:50:10';
time(10,:) = '10-Sep-2012 13:51:10';
time(11,:) = '10-Sep-2012 13:52:10';
time(12,:) = '10-Sep-2012 13:53:10';

ts = timeseries(data,time);
ts.TimeInfo.Format = 'dd, HH:MM:SS';

figure(1)
plot(ts);

%saveas(gca, 'tickmovetest', 'png')
print(gcf, '-dpng', 'tickmovetest')

plot と saveas コマンドのどちらを使用してもかまいません。data は単なる乱数で、time は '10-Sep-2012 13:42:10' のような文字列を含む同じ長さのベクトルです。

誰かが問題を経験し、答えを見つけましたか? matlab が、プロットを保存する前に持っていた目盛りの数を保持するだけであれば、それは素晴らしいことです。

4

1 に答える 1

0

Figure を保存すると、Matlab によって Figure のサイズが変更されます。目盛りとラベルを付ける場所を明示的に指定しないと、ラベルが重なってしまう可能性があります。
つまり、次の 2 つのオプションがあります。

  1. 目盛り位置と目盛りラベルを手動で設定します。
  2. Matlab File Exchange にはsaveSamesize、画面に表示されるのとまったく同じサイズで図を保存するという貢献があります。(R2013aで動作します)。
    上記の例では、次のように呼び出します。

    saveSameSize(gcf, 'format', 'png', 'file', 'tickmovetest.png');
    

私の推奨事項は、目盛りの位置とラベルを積極的に設定して、驚きを避けることです。

PS
あなたの例では重複するラベルは生成されませんが、このprint-command は次のことを行います:

print(gcf, '-dpng','-r200','tickmovetest')
于 2013-08-12T14:40:56.870 に答える