2013-01-07 13 views
5

Kiedy wykreślam plaster z przezroczystością < 1 nad obrazem utworzonym za pomocą imagesc (Matlab R2012a), otrzymuję coś, co wygląda jak wiele "kleszczowych labiryntów" lub liczb nad obrazem wzdłuż osi. Poniższy kod powtarza problem:przy użyciu wartości przezroczystości nad imagesc

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

Czy to błąd, czy jest jakiś sposób, aby zrobić to właściwie?

EDIT Numery znikają jeśli ustawić set(gca,'xtick',[],'ytick',[]), więc to jest rzeczywiście związane z kleszczy. Oczywiście wolałbym mieć kleszcze na mojej figurze.

imagesc with numbers on it

+1

Po prostu próbowałem na 2012b i tak się nie stało. Czy to też się dzieje po zrobieniu nowego początku programu Matlab? Zgaduję, że masz starą oś, która powoduje problem. –

+0

Ciągle dzieje się po ponownym uruchomieniu i dla nowej figury. –

+0

Jeśli zmienisz renderer na 'zbuffer', czy problem nadal występuje? tj. 'set (gcf, 'renderer', 'zbuffer')' – Jonas

Odpowiedz

2

Ten rodzaj artefaktu graficznego jest zwykle związane z renderujący. Szczególnie renderer OpenGL wydaje się zepsuć niektóre kombinacje wydania Matlab, karty graficznej i systemu operacyjnego.

Standardowa obejście jest change the renderer from OpenGL to zBuffer in the figure properties, co osiąga się poprzez polecenie

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

Niestety, OpenGL jest tylko renderujący, który obsługuje przezroczystość, więc to rozwiązanie nie będzie pracować dla Ciebie.

jako możliwą alternatywę obejście, można przełączać się od sprzętu do oprogramowania OpenGL renderer za pomocą polecenia

opengl software 

Sprawdź help on opengl aby dowiedzieć się, jak ustawić to w przypadku jesteś w * nix środowiska .

Powiązane problemy