2013-01-07 12 views
5

Quando stampo una patch con trasparenza < 1 su un'immagine creata con imagesc (Matlab R2012a), ottengo qualcosa che assomiglia a molti "tick lables" o numeri sopra l'immagine lungo gli assi. Il seguente codice riproduce il problema:utilizzando il valore di trasparenza su imagesc

imagesc(rand(10,20)) 
hold on 
patch([5 5 15 15],[3 7 7 3],'r','facealpha',.5) 

Si tratta di un errore o esiste un modo per farlo correttamente?

EDIT I numeri scompaiono se ho impostato set(gca,'xtick',[],'ytick',[]), quindi è davvero tick-correlati. Naturalmente preferirei avere le zecche sulla mia figura.

imagesc with numbers on it

+1

Ho appena provato su 2012b e non succede. Questo succede anche dopo aver fatto un nuovo inizio di matlab? Direi che hai qualche asse vecchio che causa il problema. –

+0

Succede ancora dopo il riavvio e per una nuova figura. –

+0

Se si cambia il renderer in 'zbuffer', il problema si verifica ancora? cioè 'set (gcf, 'renderer', 'zbuffer')' – Jonas

risposta

2

Questo tipo di artefatto grafico è di solito legato al renderer. In particolare, il renderer OpenGL sembra incasinare alcune combinazioni di release Matlab, scheda grafica e sistema operativo.

La soluzione standard è a change the renderer from OpenGL to zBuffer in the figure properties, che si ottiene tramite il comando

set(gcf,'renderer','zbuffer') 

Purtroppo, OpenGL è l'unico renderer che supporta la trasparenza, quindi questa soluzione non funziona per voi.

Come possibile soluzione alternativa, è possibile passare dall'hardware al software OpenGL renderer tramite il comando

opengl software 

Controllare il help on opengl per scoprire come impostare questa funzione nel caso in cui ti trovi in ​​un ambiente * nix .

Problemi correlati