5

データXのサイズが1000*1000であると想定します。Xは、次のコマンドを使用して表示されます。

imagesc(X);

そして、すべての行は以下を使用してラベル付けされます。

set(gca, 'YTickLabel', somelabels);

データXは適切にプロットされ、Ytickラベルも表示されますが、行数が多いため、ラベルは非常に重なっています。問題を解決する方法はありますか?どんな助けでも大歓迎です。

編集1

私の質問は私の問題を表すためにうまく述べられていなかったことに気づきました。答えに基づいて理解をまとめ、もう一度質問します。

  1. フィギュアウィンドウにできるだけ多くの行/ラベルを表示するには、次のことが役立ちます。

    set(gca,'FontSize',6), 
    or, alternate the distance (suggested by yuk),
    or, set(gca,'YTick',1:10:1000,'YTickLabel',somelabels(1:10:1000));
    
  2. コード

    set(gca,'Units','pixels','Position',[20 20 10000 10000]);
    

    デフォルトでは、拡大された画像が表示されます。ただし、拡大した画像が大きすぎてフィギュアウィンドウに収まらない場合は、画像の一部のみが表示されます。ただし、ズームアウトパンツールもその画像の残りの部分に到達することはできません。

  3. コードのデフォルトの動作

    imagesc(X);
    set(gca, 'ytick', 1:1000, 'yticklabe', ylabel);
    

    重複するラベルを使用して、画像ウィンドウ全体を図ウィンドウに合わせて表示します。それでも、画像の一部を拡大して、重複していないラベルを表示することはできます。

  4. 画像をPDFファイルに保存する場合:

    imagesc(X);
    set(gca, 'ytick', 1:1000, 'yticklabe', ylabel);
    saveas(gcf, 'fig.pdf');
    

    保存されたPDFは、ラベルが重なっているフィギュアウィンドウに収まる画像のみです。ただし、Matlabフィギュアウィンドウ内でのズームインとは異なり、PDFリーダー内でのズームインはラベルの相対的な位置/距離を変更しません。その結果、PDFで拡大された画像はまだラベルが重なっています。

だから私の質問は:画像をpdfファイルまたはpngに保存して、Adobe Readerで開いたときに上記のポイント4
同様の動作をするようにするにはどうすればよい ですか?

4

2 に答える 2

4

また、Axesラベルフォントで遊んで小さくすることもできます。

set(gca,'FontSize',6)

フォントを変更するには、他の軸のプロパティ(FontName、FontWidth、FontUnitsなど)も参照してください。

別の解決策:ラベルが短い場合は、軸からの距離を交互に変えて、ラベルが重ならないようにすることができます。この例を確認してください。

lbl = cellstr(reshape(sprintf('%3d',1:100),3,100)');
lbl(1:2:100) = strcat(lbl(1:2:100),{'     '});
imagesc(rand(100))
set(gca,'ytick',1:100)
set(gca,'yticklabel',lbl)

結果の画像の一部:

サンプル画像

アップデート

更新された質問に答えるため。

  1. PDFドキュメントには静止画像のみを含めることができます。図形をPDF(またはその他のグラフィックファイル)に保存すると、MATLAB図形ツールのようにズームイン/ズームアウトすることはできません。
  2. 最初にMATLABの図をズームしてから、PDFファイルを保存できます。この場合、図はそのまま保存されます。ただし、この方法では、ユーザーが図と対話することを前提としています。
  3. 関心のある領域が事前にわかっている場合は、XLim / YLimプロパティを使用して軸の制限を設定し、図を保存できます。

例:

imagesc(X);
set(gca, 'ytick', 1:1000, 'yticklabe', ylabel);
set(gca, 'XLim',[1 20], 'YLim', [20 40])
saveas(gcf, 'fig.pdf');

ちなみに、PRINT機能でフィギュアをファイルに保存することもできます。より柔軟。SAVEASはそれを包み込むだけです。

print('-dpdf','fig.pdf')
于 2010-09-09T03:45:30.087 に答える
4

もう1つのオプションは、このテクニカルソリューションで説明されている目盛りラベルを回転させることです。MATLAB File Exchangeには、使いやすい実装がいくつかあります。

代替テキスト

于 2010-09-09T04:35:17.323 に答える