2012-01-03 11 views
4

私はカラーバーでcontourfを使って図を生成しました。私のプロットの大部分は問題ありませんが、カラーバーの値が10^{-3}の場合は、数字の0.005などがカラーバーで書き込まれます。またはx10^{-3}が上に表示されます。どちらの場合もFigureをepsファイルとして保存するとき、Matlabはカラーマップラベルを切り捨てます

は、ラベルの一部が切り取られます - 5x10^{-3}3またはハーフのいずれか0.005に。

私はフィギュアの画面上のため

set(gca, 'ActivePositionProperty', 'OuterPosition') 

を使用してこの問題を解決することができますが、私は、EPS形式で保存する必要があります。これを行うと、3(または5)がもう一度切断されます。

フィギュアウィンドウの右下隅を手動で引き上げて大きくすることもできます。しかし、これは、他のすべての図形、すなわちサイズを変更しない図形とは異なるように、軸ラベルなどのサイズをプロット自体と比較して変更します。

提案がありますか?

+2

ソースコードを投稿してください –

答えて

2

Matlabは、画面サイズ(Positionフィギュアプロパティ)とPaperSizeの2つのサイズを使用します。前者は画面に表示するために使用され、後者は.fig以外の画像形式に印刷またはエクスポートされます。私はこれがあなたの問題の原因だと思う。ここで

あなたが試すことができるものである。

size = get(gcf,'Position'); 
size = size(3:4); % the last two elements are width and height of the figure 
set(gcf,'PaperUnit','points'); % unit for the property PaperSize 
set(gcf,'PaperSize',size); 

これは、画面上に表示図形の大きさに.epsにエクスポートするための「紙」のサイズを設定します。

これが機能しない場合は、PaperSizeやその他の「紙」関連のプロパティで少し再生しようとすることができます。 Figure Propertiesのドキュメントページには、プロパティに関する詳細が記載されています。

希望すると便利です。

2

前の提案は部分的に正しいです。ここに私がやったことです:

  1. セットの両方、数字や紙ユニット、同じメジャーに(数字はピクセルではなく、ポイントを持っている!)

    set(gcf,'Units','points') 
    set(gcf,'PaperUnits','points') 
    
  2. 前に示唆したのと同じ操作を行います。

    size = get(gcf,'Position'); 
    size = size(3:4); 
    set(gcf,'PaperSize',size) 
    
  3. ことですが、それは私の場合のように、紙を、オフにシフトするかもしれないので、

    に戻ってそれを置きます0
    set(gcf,'PaperPosition',[0,0,size(1),size(2)]) 
    

私はオフセット[0,0]のわからないですが、何の単一ポイントが切断された:)

0

ファイル名にファイルを保存するために、これを試してみてください。eps

set(gcf,'Units','points') 
set(gcf,'PaperUnits','points') 
size = get(gcf,'Position'); 

size = size(3:4); 
set(gcf,'PaperSize',size) 
set(gcf,'PaperPosition',[0,0,size(1),size(2)]) 

print(gcf,'filename','-depsc','-loose'); % Save figure as .eps file 
関連する問題