2012-12-25 2 views
6

기사에서는 변형 된 유한 요소 메시의 플롯을 생성합니다.이 플롯은 matplotlib의 polycollection을 사용하여 시각화합니다. 이미지는 pdf로 저장됩니다.matplotlib 축 내용 래스터 화하기 (프레임, 레이블 제외)

고밀도 메쉬에 대한 문제는 순진적인 접근으로 인해 파일이 너무 커지고 실용적이지 않게 너무 집중적으로 나타납니다.

이 메시의 경우 각 요소를 다각형으로 그려 보는 것은 의미가 없습니다. jpg 또는 png로 이미지를 저장할 때처럼 쉽게 래스터 화 될 수 있습니다. 그러나 인쇄물의 경우 날카로운 프레임, 레이블 및 특수 효과를 고수하고 싶습니다.

matplotlib에서 이러한 종류의 하이브리드 래스터 화를 달성 할 수 있다면 누구에게 알 수 있습니까?

imshow와 polycollection을 우회하는 솔루션을 생각할 수 있지만 matplotlib의 기본 제공 구성 요소를 사용하는 것이 좋습니다.

귀하의 조언에 감사드립니다.

답변

9

rasterized=True 키워드를 컬렉션 생성자에 전달하기 만하면됩니다. 예 :이은 (당신이 그 위에 일반 플롯을 한 경우, 예를 들어, 그것은 기본적으로 벡터화 될 것이다) 그 요소의 선택 래스터 수 있습니다

col = collections.PolyCollection(<arguments>, rasterized=True) 

. plot 또는 imshow과 같은 대부분의 명령은 rasterized 키워드를 사용할 수도 있습니다.

fig = plt.figure() 
a = fig.add_subplot(1,1,1, rasterized=True) 

을 (하지만이 질문에 명시된대로, 원하는 것을하지 않습니다.)

+0

을 와우, 간단합니다 : 하나 (라벨 및 주석 포함) 전체 그림을 래스터하고자하는 경우,이 그것을 할 것 . 나는 지금 나의 인터넷 검색 기술에 대해 걱정한다. 하지만이 답변을 주셔서 대단히 감사합니다. 이것이 바로 제가 바라는 바입니다! – gertjan

+0

대단하군요! 그래도 래스터 화의 dpi를 어떻게 제어 할 수 있습니까? 그것은'figure'와'savefig'에 전달하는 dpi를 무시하는 것 같습니다 ... – weronika

+0

@weronika,'figure' 나'savefig'의 dpi가 작동하지 않는다면, 나는 그것을 어떻게 바꿀 지 모릅니다 . 'collections'는 아티스트'allow_rasterization' 데코레이터를 사용하는 것 같습니다. 그러나 빠른 눈에서 dpi를 설정하는 방법을 볼 수는 없습니다. – tiago