2014-04-17 12 views
9

Quando si tenta di stampare un grafico su .png in Octave 3.8.1.1 su Windows 8 64-bit, il grafico degli assi, ma la linea che sto stampando non stamperà . La trama Sto creando è:Assi ma nessuna linea quando si stampa il grafico in Octave per Windows

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

La trama risultante:

enter image description here

E l'immagine salvata su disco:

enter image description here

Così gli assi vengono visualizzati bene, ma la linea che ho tracciato è completamente mancante!

ho gs9.09 (Win32) installato, con epstool win32 copiato in GS di/bin, che viene impostato nel mio %HOMEPATH%\.octaverc come:

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 

Sono in esecuzione la versione GUI di Windows tramite w8-octave-gui.bat.

EDIT Su un lancio fresco con i seguenti comandi per impostare gnuplot come il set di strumenti grafici prima di lanciare qualsiasi appezzamenti (da @ commenti di Andy), ottengo un immagine in bianco bianco per tutte le immagini senza -dpngalpha (1, 2, 4, 5) e completamente immagini trasparenti senza contenuti per immagini con-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

Hai provato con un diverso 'graphics_toolkit'? – am304

+0

Congratulazioni per questa domanda ben scritta. Aggiungendo al commento di @ am304, prova anche con una sintassi alternativa: 'print ('figure.png', '- dpng')'. – juliohm

+0

@ am304 - Non ero a conoscenza di questa opzione, grazie. L'uso di 'available_graphics_toolkits()' elenca 'gnuplot' e' fltk' sul mio sistema. Passando a 'gnuplot' posso stampare con successo solo file .emf e posso inviare il grafico alla mia stampante (progresso!). Ogni altro formato che ho provato con 'gnuplot' stampa un'immagine bianca vuota (.png, .pdf, .jpg). Quando provo .gif l'applicazione si arresta in modo anomalo (se si salva dalla finestra trama) o segnala "il terminale gnuplot", "gif", non è disponibile' se eseguito dalla finestra di comando. - Preferirei l'output .png, qualche idea al riguardo? – cod3monk3y

risposta

2

Sembra che tu abbia colpito questo bug: https://savannah.gnu.org/bugs/?42534

So che avete risposto al commento di juliohm che il passaggio a gnuplot non ha un effetto ma non riesco a crederci. È necessario eseguire graphics_toolkit("gnuplot") prima di qualsiasi comando che crea una figura di trama. Per essere sicuro, puoi eseguire "Chiudi tutto" prima.

Il motivo del tuo problema è probabilmente che la linea viene stampata dietro lo sfondo bianco a causa di alcuni errori di arrotondamento in Z-depth. Potete per favore provare EDIT: questi comandi quando graphics_toolkit fltk è attivata (dovrebbe essere il caso con una installazione di default e un nuovo inizio):

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

per verificare questo? Questo non risolve il tuo problema, ma aiuta i manutentori di Octave a trovare il problema.

+0

Ho eseguito questo come raccomandato, senza modifiche. L'unica differenza è '-dpngalpha' salva l'immagine trasparente invece del solo bianco completo. Vedi modifica alla domanda con il registro di esecuzione completo, eseguito dal lancio dell'applicazione. – cod3monk3y

+0

Dove hai scaricato il tuo programma di installazione usato? È da http://mxeoctave.osuv.de/? Puoi iniziare l'ottava con la sua linea di comando (e non con la GUI sperimentale) e provare a stampare? Grazie – Andy

+0

@ cod3monkey: I comandi nella mia risposta erano destinati all'esecuzione con fltk come toolkit di grafica, non con gnuplot. Scusa se non sono stato chiaro su questo, ma poiché la tua prima figura della tua domanda mostra FLTK, ho pensato che è chiaro che proviamo prima a far funzionare la stampa FLTK e gnuplot è solo un'opzione se FLTK non funziona per te. – Andy

0

Ho riscontrato lo stesso problema.

Per me la soluzione era bypassare il driver di grafica di sistema e passare al rendering del software OpenGL con Mesa. Per raggiungere questo obiettivo ho scaricato il binario di Windows di Mesa che è collegato su http://qt-project.org/wiki/Cross-compiling-Mesa-for-Windows e copiato il file opengl32.dll incluso nella directory bin di ottava. Successivamente il comando di stampa ha funzionato bene.

Il file binario di Mesa dal collegamento sopra riportato è stato realizzato con LLVMpipe e sembra essere abbastanza veloce.

Problemi correlati