MATLABs nuovo motore grafico, HG2, non riesce a stampare correttamente le patch utilizzando la pittori renderer:patch dividere triangolari con i pittori renderer in MATLAB 2014b e soprattutto
hist(randn(1,1000));
colorbar('Location','SouthOutside');
print('test.pdf','-dpdf');
Le patch derivanti, sia generato da hist
o colorbar
, hanno divide triangolari:
La questione è stata discussa in MATLAB Central here e here, dove è stato suggerito che disabilitare l'opzione "smooth line art" nel visualizzatore di file PDF dovrebbe risolverlo. Ciò nasconde il problema in alcuni lettori (ad esempio in Adobe Reader ma non in Apple Preview), ma non è certo una soluzione chiedere ai collaboratori e ai lettori di utilizzare uno specifico visualizzatore di PDF con impostazioni non predefinite affinché la grafica appaia correttamente. Guardando il file risultante in Inkscape, è chiaro che la divisione è presente nella grafica vettoriale di output. Qui, mi sono trasferito una metà del colorbar, dimostrando che in realtà è diviso a metà, e non solo interpretato male dal pdf-viewer:
Il problema non è presente con il renderer OpenGL (print('test.pdf','-opengl')
, ma poi l'output non è vettorializzato). Il problema persiste in MATLAB 2015a.
Esiste un modo per esportare immagini vettoriali senza artefatti in MATLAB 2014b o versioni successive?
L'unica soluzione che ho trovato finora è la post-elaborazione, ad es. in Adobe Illustrator. Per La barra dei colori aiuta a rimuovere semplicemente la maschera di ritaglio. Per l'istogramma, devi selezionare tutti i triangoli (Attraverso seleziona lo stesso aspetto) e aggiungere un tratto di contorno sottile. Non aiuta MATLAB a esportare i triangoli come percorsi chiusi, quindi è potenzialmente necessario chiudere manualmente ogni percorso per farlo funzionare. Questo, ovviamente, è fattibile solo per cifre finali non troppo complesse ... – zeeMonkeez