2014-04-17 3 views
9

Beim Versuch, ein Plot mit Oktav 3.8.1.1 in Windows 8 64-Bit zu drucken, werden die Achsen zwar plottiert, aber die Linie, die ich zeichne, wird nicht gedruckt . Das Grundstück Ich schaffe ist:Achsen, aber keine Zeilen beim Drucken von Plot in Oktave für Windows

> t = 0:0.1:6.28318; 
> plot (t, sin(t)); 
> print figure.png 

Das resultierende Grundstück:

enter image description here

Und das Bild auf der Festplatte gespeichert:

enter image description here

So werden die Achsen zeigt nach oben Gut, aber die Linie, die ich geplottet habe, fehlt komplett!

Ich habe gs9.09 (win32) installiert, mit epstool win32 in GS kopiert/bin-Verzeichnis, das in meinem %HOMEPATH%\.octaverc als festgelegt wird:

cmd_path = getenv ("path"); 
gs_path = 'C:\Programs\gs\gs9.09\bin'; 
if (isempty (strfind (cmd_path, gs_path))) 
    setenv ('path', strcat (cmd_path, pathsep(), gs_path)); 
endif 

ich die Windows-GUI-Version leite über w8-octave-gui.bat.

EDIT Auf einem frischen Start mit den folgenden Befehlen als Grafik-Toolkit zu setzen gnuplot, bevor Sie Plots startet (von @ Andy Kommentaren), habe ich ein leeres weißes Bild für alle Bilder erhalten, ohne -dpngalpha (1, 2, 4, 5) und vollständig transparente Bilder ohne Inhalt für Bilder mit -dpngalpha (3, 6):

>> graphics_toolkit("gnuplot"); 
>> graphics_toolkit() 
ans = gnuplot 
>> t = 0:0.1:6.3; 
>> plot(t,sin(t)); 
>> print ("1.png"); 
>> print ("-dpng", "2.png"); 
>> print ("-dpngalpha", "3.png"); 
>> axis("off"); 
>> print ("4.png"); 
>> print ("-dpng", "5.png"); 
>> print ("-dpngalpha", "6.png"); 

Halp!

+1

Haben Sie es mit einem anderen 'graphics_toolkit' versucht? – am304

+0

Herzlichen Glückwunsch zu dieser gut geschriebenen Frage. Füge zu @ am304's Kommentar hinzu, versuche es auch mit der alternativen Syntax: 'print ('figure.png', '- dpng')'. – juliohm

+0

@ am304 - Ich war mir dieser Option nicht bewusst, danke. Mit 'available_graphics_toolkits()' listet 'gnuplot' und' fltk' auf meinem System auf. Wechseln zu 'gnuplot' Ich kann erfolgreich nur .emf Dateien drucken, und kann das Diagramm an meinen Drucker senden (Fortschritt!). Jedes andere Format, das ich mit gnuplot ausprobiert habe, druckt ein leeres weißes Bild (.png, .pdf, .jpg). Wenn ich .gif versuche, stürzt die Anwendung ab (beim Speichern aus dem Plotfenster) oder meldet, dass das Gnuplot-Terminal "gif" nicht verfügbar ist, wenn es im Befehlsfenster ausgeführt wird. - Ich würde gerne .png Ausgabe, irgendwelche Gedanken dazu? – cod3monk3y

Antwort

2

Sieht aus wie Sie diesen Fehler getroffen haben: https://savannah.gnu.org/bugs/?42534

Ich weiß, dass Sie juliohm Kommentar beantwortet das nicht wirkt sich auf gnuplot Schalt aber ich kann es nicht glauben. Sie müssen graphics_toolkit("gnuplot") vor jedem Befehl ausführen, der eine Plot-Figur erstellt. Um sicher zu gehen, kannst du vorher "alle schließen" ausführen.

Der Grund für Ihr Problem ist möglicherweise, dass die Zeile hinter dem weißen Hintergrund aufgrund einiger Rundungsfehler in der Z-Tiefe gedruckt wird. Können Sie bitte EDIT versuchen: dieser Befehl, wenn graphics_toolkit fltk aktiviert ist (sollte der Fall mit einem Standard-Installation und ein Neuanfang sein):

t = 0:0.1:6.28318; 
plot (t, sin(t)); 
axis ("off"); 
print ("-dpngalpha", "out.png") 

dies zu überprüfen? Dies löst Ihr Problem nicht, sondern hilft den Octave-Betreuern, das Problem zu finden.

+0

Ich habe dies wie empfohlen ausgeführt, ohne Änderung. Der einzige Unterschied ist, dass "-dpngalpha" das Bild transparent statt nur voll weiß speichert. Siehe Bearbeiten der Frage mit dem vollständigen Ausführungsprotokoll, das beim Start der App ausgeführt wurde. – cod3monk3y

+0

Wo haben Sie Ihr gebrauchtes Installationsprogramm heruntergeladen? Ist es von http://mxeoectave.osuv.de/? Können Sie die Oktave mit ihrer Kommandozeile (und nicht mit der experimentellen GUI) starten und versuchen, zu drucken? Danke – Andy

+0

@ cod3monkey: Die Befehle in meiner Antwort sollten mit fltk als Grafik-Toolkit, nicht mit gnuplot ausgeführt werden. Es tut mir leid, dass ich nicht klar darüber war, aber weil Ihre erste Figur aus Ihrer Frage FLTK zeigt, dachte ich, dass wir zuerst versuchen FLTK-Druck zu starten und gnuplot ist nur eine Option, wenn FLTK nicht für Sie funktioniert. – Andy

0

Ich stieß auf das gleiche Problem.

Für mich war die Lösung, den Systemgrafiktreiber zu umgehen und zu OpenGL-Software-Rendering mit Mesa zu wechseln. Um das zu erreichen, habe ich die Windows-Binärdatei von Mesa, die auf http://qt-project.org/wiki/Cross-compiling-Mesa-for-Windows verlinkt ist, heruntergeladen und die enthaltene opengl32.dll in das Verzeichnis octave bin kopiert. Danach funktionierte der Druckbefehl einwandfrei.

Die Mesa-Binärdatei aus dem obigen Link wird mit LLVMpipe erstellt und scheint einigermaßen schnell zu laufen.

Verwandte Themen