WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Plot als EPS exportieren

 

VladTepes
Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 04.02.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.02.2013, 18:18     Titel: Plot als EPS exportieren
  Antworten mit Zitat      
Hallo Leute,
möchte einen plot als .eps exportieren. Ich benutze Matlab 2012b auf Ubuntu.
Wenn ich einen plot mache, und z.B. die Schriftart des Titels groß und fett einstelle (im skript) dann übernimmt er das im Plot nicht.
Wenn ich das dann aber exportiere mit dem Befehl:
Code:

print(gcf,'-depsc', [saveFilename '.eps']);
 

übernimmt er meine Änderungen und es sieht gut aus.
Also es geht um die Labels und Title, diese werden nicht in der eingestellten Schriftgröße und Typ ('FontWeight','bold') gespeichert.

In einem Skript funktioniert das problemlos. In einem anderen funktioniert es wiederum nicht ?
Muss ich auf was besonderes achten wenn ich als eps exportiere ?

Habt ihr eine Idee ?

Anbei nochmal der Code bei dem das EPS genauso schlecht aussieht wie das figure.Also die vorher eingestellten Änderungen nicht übernimmt:

Code:

figH =figure;
hold on
pcolor(vector_snapshots,-180:resolution:180,aps_dB);
colormap hot
shading interp
axis([min(vector_snapshots) max(vector_snapshots) -180 180])
%caxis([-140 -60]);
if strcmpi(mode,'rx')
    ylabel('Azimuth-Eintrittswinkel in Grad','fontweight','bold');
else
    ylabel('Azimuth AOD in Grad');
end
xlabel('Zeit in s','fontweight','bold')
title('Winkelleistungsspektrum','FontWeight','bold','FontSize',12);

cbar_handle= colorbar();
set(get(cbar_handle,'ylabel'),'string','Pfadverlust in dB','fontweight','bold')
%set(gcf,'Color','none')

saveas(figH,[saveFilename  '_azi.fig'] );
print(figH,'-depsc', [saveFilename '_azi.eps']);
 
Private Nachricht senden Benutzer-Profile anzeigen


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 11.02.2013, 09:57     Titel:
  Antworten mit Zitat      
Seit gefühlten 100 Jahren nutzen die Menschen dies hier zum exportieren von EPS: http://www.mathworks.de/matlabcentr.....eexchange/23629-exportfig

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
VladTepes
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 04.02.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2013, 11:29     Titel:
  Antworten mit Zitat      
Anscheinend hast du mich nicht richtig verstanden.

Naja in der Beschreibung steht doch ganz klar:
- Figure/axes reproduced as it appears on screen
Das steht nochmal in den "Usage exapmles" ganz deutlich.

Und das ist es gerade was ich nicht will!

Zum besseren Verständnis habe ich nochmal 2 Screenshots angehängt.
Das eine ist das Figure das während das Skript läuft dargestellt wird. Das andere ist das abgespeicherte .eps Bild welches NUR abgespeichert wird.
Das abgespeicherte sieht entsprechend meinen Einstellungen aus. Das figure übernimmt meine Einstellungen nicht.

Das Problem ist, das bei dem obigen Skript das gespeicherte EPS genauso schlecht aussieht, wie das figure. Question
Ich erkenne jedoch keinen Unterschied im Code... Question

Anbei der andere Code bei dem es funktioniert:
Code:

figure('Name','Antenna Pattern');
plotAnt2d_V10(C_theta(:,:,ii),G(ii));
            title({[name1 ' - Antenne ' num2str(ii) ' Vertikal']},'FontWeight','bold','FontSize',12,'position', [1, 200]);
            saveas(gcf,[saveFilename '_subCh' num2str(ii) '_vert.fig'] );
            print(gcf,'-depsc', [saveFilename '_subCh' num2str(ii) '_vert.eps']);


figure_auf_monitor.png
 Beschreibung:

Download
 Dateiname:  figure_auf_monitor.png
 Dateigröße:  82.89 KB
 Heruntergeladen:  1608 mal
abgespeichertes_eps.png
 Beschreibung:

Download
 Dateiname:  abgespeichertes_eps.png
 Dateigröße:  313.59 KB
 Heruntergeladen:  1556 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 11.02.2013, 12:28     Titel:
  Antworten mit Zitat      
Hallo VladTepes,

Ich kann der bisherigen Beschreibung des Problems nicht folgen:
Zitat:
...übernimmt er meine Änderungen und es sieht gut aus.
Also es geht um die Labels und Title, diese werden nicht in der eingestellten Schriftgröße und Typ ('FontWeight','bold') gespeichert.

Sieht es nun gut aus oder werden die eingestellten Schriftgrößen falsch gespeichert?
Was bedeutet: "Das andere ist das abgespeicherte .eps Bild welches NUR abgespeichert wird." Abgespeicherte Bilder werden immer "nur" abgespeichert, oder?

Möchtest Du die Grafik anders speichern, als sie am Bildschirm dargestellt wird? Falls ja, ist dies ein indirekte verbogene Herangehensweise.

Zitat:
Ich erkenne jedoch keinen Unterschied im Code... :?:

Ein Unterschied benötigt laut Definition zwei Objekte. Kannst Du bitte beide Code-Abschnitte posten, von denen Du sprichst? Und wenn Du das bereits getan hast, versuche es bitte nochmal klarer.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
VladTepes
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 04.02.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2013, 13:01     Titel:
  Antworten mit Zitat      
Hallo,
sorry schonmal für den riesen Post, Laughing
aber besser ein bisschen mehr schreiben und dafrü verständlich, als zu kurz und unverständlich.

Jan S hat Folgendes geschrieben:

Zitat:
...übernimmt er meine Änderungen und es sieht gut aus.
Also es geht um die Labels und Title, diese werden nicht in der eingestellten Schriftgröße und Typ ('FontWeight','bold') gespeichert.

Sieht es nun gut aus oder werden die eingestellten Schriftgrößen falsch gespeichert?

Also zunächst mache ich ein figure, plotte und füge z.B. einen Titel mit Optionen hinzu. Dieses figure wird auf dem Monitor angezeigt. Auf dem Figure übernimmt er keine Optionen. Also keine veränderte Schriftgröße und kein Bold.

Dann exportiere () ich eben dieses figure als eps. Nun im .eps Format sind die Optionen(Schriftgröße und Bold) auf einmal da.

Zitat:

Was bedeutet: "Das andere ist das abgespeicherte .eps Bild welches NUR abgespeichert wird." Abgespeicherte Bilder werden immer "nur" abgespeichert, oder?

Während das Skript läuft wird das Figure angezeigt UND gespeichert (möchte es als Sicherheit, um es notfalls vllt. später auf Windows Matlab zu verbessern).
Das .eps hingegen wird nur gespeichert und nicht angezeigt.

Zitat:
Möchtest Du die Grafik anders speichern, als sie am Bildschirm dargestellt wird? Falls ja, ist dies ein indirekte verbogene Herangehensweise.

Ja das möchte ich. Aber nur weil ich auf Matlab Linux arbeiten muss, und es das nicht richtig anzeigt! Auf Windows funktioniert alles wie es soll. Muss aber leider auf Linux bleiben.

Zitat:
Zitat:
Ich erkenne jedoch keinen Unterschied im Code... Question

Ein Unterschied benötigt laut Definition zwei Objekte. Kannst Du bitte beide Code-Abschnitte posten, von denen Du sprichst? Und wenn Du das bereits getan hast, versuche es bitte nochmal klarer.


Das Problem an der Sache ist, dass es in einem Skript funktioniert (das .eps hat die Optionen übernommen) und im anderen nicht.

Hier funktioniert es:
Code:

figure('Name','Antenna Pattern',);
        if plotMode=='vertikal'

        plotAnt2d(C_theta(:,:,ii),G(ii));
            title({[name1 ' - Antenne ' num2str(ii) ' Vertikal']},'FontWeight','bold','FontSize',12,'position', [1, 200]);
            saveas(gcf,[fullfile(savePath,'fig',saveName) '_subCh' num2str(ii) '_vert.fig'] );
            print(gcf,'-depsc', [fullfile(savePath,saveName) '_subCh' num2str(ii) '_vert.eps']);


Hier funktioniert es nicht:
Code:
figH =figure;
hold on
pcolor(vector_snapshots,-180:resolution:180,aps_dB);
colormap hot
shading interp
axis([min(vector_snapshots) max(vector_snapshots) -180 180])
%caxis([-140 -60]);
if strcmpi(mode,'rx')
    ylabel('Azimuth-Eintrittswinkel in Grad','fontweight','bold');
else
    ylabel('Azimuth AOD in Grad');
end
xlabel('Zeit in s','fontweight','bold')
title('Winkelleistungsspektrum','FontWeight','bold','FontSize',12);

cbar_handle= colorbar();
set(get(cbar_handle,'ylabel'),'string','Pfadverlust in dB','fontweight','bold')
%set(gcf,'Color','none')

saveas(figH,[saveFilename  '_azi.fig'] );
print(figH,'-depsc', [saveFilename '_azi.eps']);
 


eps_optionen_NICHT_uebernommen.png
 Beschreibung:
Hier wurden die angewendeten Optionen nicht übernommen. Man erkennt auch klar den Unterscheid :-)

Download
 Dateiname:  eps_optionen_NICHT_uebernommen.png
 Dateigröße:  155.42 KB
 Heruntergeladen:  1403 mal
eps_mit_uebernommenen_Optionen.png
 Beschreibung:
Hier wurden alle Optionen übernommen. So soll es aussehen.

Download
 Dateiname:  eps_mit_uebernommenen_Optionen.png
 Dateigröße:  313.59 KB
 Heruntergeladen:  1410 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 11.02.2013, 14:27     Titel:
  Antworten mit Zitat      
Hallo VladTepes,

Zitat:
Also zunächst mache ich ein figure, plotte und füge z.B. einen Titel mit Optionen hinzu. Dieses figure wird auf dem Monitor angezeigt. Auf dem Figure übernimmt er keine Optionen.

Hier möchte ich gleich stehen bleiben: Wieso übernimmt wer keine Optionen? Bold Text sollte auch im Figure Bold sein und auch die Schriftgröße ist normalerweise im Figure veränderlich. Es sei denn, Du benutzt einen Font, für den keine entsprechenden TrueType-Schnitte vorhanden sind. Das könnte dann beim EPS-Export tatsächlich anders aussehen, falls Du die entsprechenden PostScript-Fonts verwendest.

Um welchen Font handelt es sich denn?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
VladTepes
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 04.02.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2013, 14:52     Titel:
  Antworten mit Zitat      
Danke für die schnelle Antwort!

Ich benutze den Standard Matlab Font, gebe also keine weitere Spezifizierung an, also z.B.
Code:
title({[name1 ' - Antenne ' num2str(ii) ' Horizontal']},'FontWeight','bold','FontSize',12,'position', [1, 200])
 


Standardmäßig ist Helvetica eingestellt:
Code:
get(0,'DefaultAxesFontName');
 


Ja er sollte es normalerweise übernehmen. Das tut er in Windows auch. Das ist ein Linux-spezifisches Problem, dass er die Optionen im Figure nicht übernimmt.

Vielleicht kennt meine Maschine einfach nicht die Schriftart? Und aus diesem Grund ignoriert er meine Optionen ?
Private Nachricht senden Benutzer-Profile anzeigen
 
VladTepes
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 04.02.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2013, 15:42     Titel:
  Antworten mit Zitat      
Habe das Problem noch eingegrenzt:
Der Befehl pcolor scheint das Problem zu sein!
In diesem Beispiel übernimmt er die Optionen am Titel (FontWeight und FontSize) im .eps.
Code:
figH =figure;
hold on
title('Winkelleistungsspektrum','FontWeight','bold','FontSize',12);


print(figH,'-depsc', [saveFilename '_azi.eps']);

pcolor(vector_snapshots,-180:resolution:180,aps_dB);
colormap hot
shading interp
axis([min(vector_snapshots) max(vector_snapshots) -180 180]) ....


Wenn ich aber die Zeile mit dem pcolor(......) vor die das print setze dann werden die Optionen wieder nicht übernommen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 11.02.2013, 18:11     Titel:
  Antworten mit Zitat      
Hallo VladTepes,

Welchen Renderer wird für die FIGURe verwendet? Wenn PCOLOR den Renderer automatisch auf "OpenGL" setzt, enthält das exportierte EPS-File nur ein Pixel-Image, während mit dem Painters-Renderer ein skalierbares Vektor-Format erzeugt wird.

Matlab setzt den Renderer automatisch, wenn der RendererMode auf "auto" gesetzt ist.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
VladTepes
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 04.02.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.02.2013, 20:18     Titel:
  Antworten mit Zitat      
Very Happy Bingo ! Das war s gewesen ! Er hatte beim Aufruf von pcolor automatisch den Renderer auf 'OpenGL' eingestellt

Arrow Umstellen auf painters und das Problem ist gelöst Very Happy
Code:
set(gcf,'Renderer','painters')


Vielen Dank dafür!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.