2014-11-23 5 views
11

OSX에서 미리보기와 같은 일부 PDF 뷰어에서는 matplotlib의 pcolor로 만든 플롯에 흰색 선이 있습니다 (아래 이미지 참조). 어떻게 그들을 제거 할 수 있습니까? matplotlib의 pcolor에있는 흰색 라인

소스 코드

은 매우 간단 ( x, y, z에 대한 모든 데이터를 선택) :

import matplotlib 
matplotlib.use("pdf") 
import matplotlib.pyplot as pl 
pl.figure() 
pl.pcolormesh(x,y,z,cmap="Blues",linewidth=0) 
pl.savefig("heatmap.pdf") 

enter image description here

+2

이것은'pcolormesh'가 실제로 개별 직사각형을 그리고, 일부 pdf 뷰어가 다른 것들과 다르게 렌더링하기 때문입니다. 이 문제를 해결하기위한 방법과 더 효율적이기 때문에'imshow'를 사용하는 것이 좋습니다. 예를 들어, 'plt.imshow (z, interpolation ='nearest ', cmap ='Blues ', extent = [x.min(), x.max(), y.min(), y.max()])'. –

+0

감사합니다. 그게 정확히 내가 잠근 것 이었어. – hanno

+0

색상 막대에도 비슷한 문제가 있습니다. 그 문제를 해결할 아이디어가 있습니까? – hanno

답변

12

코멘트가 imshow을 활용하는 좋은 해결책을 가지고 있습니다.

pl.pcolormesh(x,y,z,cmap="Blues",linewidth=0,rasterized=True) 
: imshow은 (균일 간격되지 예)이 일반적으로 그 방법은 충분히 라인을 감소하지 않는 경우, 당신은이 시도 할 수

pcol = pl.pcolormesh(x,y,z,cmap="Blues",linewidth=0,) 
pcol.set_edgecolor('face') 

이 문제를 해결 입력 데이터에 적합하지 않은 경우

사각형 사이의 줄을 줄이는 것 외에도이 방법은 파일 크기를 약간 줄이는 경향이있어 가끔 유용합니다. 이 경우 저장시 dpi 설정을 조정 (예 : pl.savefig("heatmap.pdf", dpi=300))하여 만족스러운 결과가 나올 때까지 조정할 수 있습니다.

+0

'rasterized = True'가 트릭을했습니다. 고마워요! – yoavram

+0

나를 위해 일하지 않습니다. – Andyk