2015-04-23 25 views
7

I patch in Matlab sono incollati insieme dai singoli triangoli. I loro bordi sono normalmente non sono visibili, ma quando esporto la figura in un formato grafico vettoriale possono chiaramente essere visto (non l'intera immagine viene visualizzata, solo una porzione ingrandita-in)MATLAB: i bordi delle patch sono visibili dopo l'esportazione come grafica vettoriale

edges of individual triangles

codice per generare questo MWE era:

xx = [0:1:100, 100:-1:0]; 
yy = [zeros(1,101), ones(1,101)]; 
p1 = patch(xx,yy,'b'); 
print('testPatch','-dpdf','-painters') 

funzione alternativa fill si comporta allo stesso. C'è un modo per evitare questo bug o devo vivere con bitmap in questo caso?

MODIFICA: una soluzione consiste nel tratteggiare l'area anziché riempirla. Ovviamente non è sempre possibile, ma nel mio caso ha funzionato bene e potrei limitarmi alla grafica vettoriale. La richiesta FEX rilevante è http://www.mathworks.com/matlabcentral/fileexchange/30733-hatchfill

+0

Non sono sicuro di ciò che causa questo, ma ho osservato un comportamento simile durante l'esportazione di grafici con marcatori circolari. Gli indicatori circolari finiscono per sembrare poligoni chiari composti da diversi triangoli. –

+1

Penso che il problema che descrivi abbia una soluzione semplice: non usare 'o' come tipo di marcatore, ma piuttosto '.'. Questo è stato il trucco per me, per quanto posso ricordare. – FliegenderZirkus

+1

Non mi stancherò mai di consigliare "export_fig" da Matlab FEX. Fa un lavoro straordinario esportando cifre, molto meglio di Maltab stessa. Provalo. –

risposta

0

plot2svg consente di creare file di grafica vettoriale (SVG) con patch ininterrotte. Resterei sintonizzato anche per gli aggiornamenti export_fig, sembra che Yair Altman sia working on this issue. Non trattenere il respiro per una soluzione di The Mathworks.

0

L'output di grafica vettoriale sparsa (sezioni, triangoli, rettangoli anziché oggetti comuni) è una delle funzionalità segrete dopo l'aggiornamento del motore grafico R2014b.

Sono stato in grado di unirmi a questi triangoli insieme al seguente script python che utilizza la chiamata di sistema di Inkscape https://github.com/Sbte/fix_matlab_eps. Ma questa è una soluzione, che funziona per grafici semplici. Questa non è una soluzione.

Utilizzare l'output raster o salvare i dati e utilizzare il software python matplot.