Frage

Es sei angenommen, dass die Daten X Größe 1000 * 1000 hat. X angezeigt wird, mit dem Befehl:

imagesc(X);

und alle Zeilen labeld mit:

set(gca, 'YTickLabel', somelabels);

Obwohl die Daten X richtig polotted sind und die Ytick Etiketten werden auch gezeigt, werden die Etiketten sehr überlappt wegen der großen Anzahl von Zeilen. Gibt es eine Möglichkeit, das Problem zu lösen? Jede Hilfe wird sehr geschätzt.

Bearbeiten 1

Ich weiß, meine Frage war nicht gut erklärt mein Problem darstellen. Ich werde meine einpacken Verständnis auf der Grundlage der Antworten und wieder eine Frage stellen:

  1. Um zu zeigen, wie viele Zeilen / Labels in einem Abbildung Fenster , die folgenden hilft:

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

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

    wird ein standardmäßig gezoomt-in Bild anzuzeigen. Aber wenn die gezoomten in Bild zu groß ist, in denen passen Abbildung Fenster , nur einen Teil des Bildes angezeigt. Doch weder Verkleinern noch der pan Werkzeug zum Rest Teil des Bildes erreichen.

  3. Das Standardverhalten des Codes

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

    zeigt das gesamte Bild passend zum Abbildung Fenster mit überlappenden Etiketten. Dennoch hat es eine erlauben Zoom in Teil des Bildes und die un-überlappenden Etiketten zu sehen.

  4. Wenn ich speichern Sie das Bild in eine PDF-Datei:

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

    Dann ist der gespeicherte pdf nur das Bild Anpassung an die Abbildung Fenster mit überlappenden Etiketten. Doch im Gegensatz zu Zoom in in Matlab Abbildung Fenster, Zoom in in einem PDF-Leser nicht die relative Position / Entfernung der Etiketten ändern. Als Ergebnis ist die gezoomten in Bild im PDF-noch-Label-überlappt.

Also meine Frage ist:
Wie das Bild in eine PDF-Datei oder png so speichern, dass sie ein ähnliches Verhalten hat wie von Nummer 3 oben, wenn sie in Adobe Reader geöffnet wird, anstatt dass von Nummer 4 ?

War es hilfreich?

Lösung

Sie können auch spielen mit Achsen beschriften Schrift es kleiner zu machen.

set(gca,'FontSize',6)

Siehe auch anderer Achsen Eigenschaften zu ändern Schriftart - Fontname, FontWidth, FontUnits, etc.

Eine andere Lösung : Wenn Sie Ihre Etiketten kurz sind, Sie dort Abstand zu den Achsen wechseln können, so dass die Etiketten nicht überlappen. Überprüfen Sie folgendes Beispiel:

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)

Ein Teil des Images:

Beispielbild

UPDATE

Ihre aktualisierte Frage zu beantworten.

  1. PDF-Dokument kann nur statische Bilder enthalten. Sobald Sie die Figur zu PDF (oder jede andere Grafikdatei) gespeichert haben, können Sie nicht zoomen / heraus wie mit MATLAB Figur Tools.
  2. Sie können zoomen Sie zuerst auf der MATLAB-Figur, dann speichern PDF-Datei. In diesem Fall wird die Figur als wird gespeichert. Aber auf diese Weise übernimmt Interaktivität Benutzer mit der Figur.
  3. Wenn Sie Ihre Region von Interesse im Voraus kennen, können Sie Achsen Grenzen mit Xlim / YLim Eigenschaften festgelegt, dann speichern Sie die Figur.

Beispiel:

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

Durch die Art und Weise, können Sie auch speichern Figur Datei mit PRINT Funktion. Flexibler. SAVEAS ist nur Wrapper um ihn herum.

print('-dpdf','fig.pdf')

Andere Tipps

Eine andere Möglichkeit ist es, die Zecke Etiketten zu drehen, die in diese technische Lösung . Sie können eine Reihe von einfach zu bedienenden Implementierungen auf dem MATLAB-File Exchange finden.

alt text

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top