복붙노트

[PYTHON] Matplotlib 3D 플롯 zorder 문제

PYTHON

Matplotlib 3D 플롯 zorder 문제

나는 파란색 표면 (plot_surface를 통해 플로팅 된)과 빨간색 구체 (scatter를 통해 플로팅 된)로 구성된 플롯을 가지고 있습니다. 서페이스의 zorder는 0으로 설정되고 구의 zorder는 1로 설정됩니다 (zorder 값을 설정하지 않으면 같은 결과가 나타남).

빨간색 구가 표면의 왼쪽에 있음을 알 수 있습니다.

플롯을 회전하면 빨간색 영역이 파란색 표면 뒤에서 사라지기 시작하는 것을 볼 수 있습니다.

빨간색 영역이 완전히 사라질 때까지 :

이상한 점은 특정 각도 / 뷰에서 빨간색 구가 다시 나타나고 다시 볼 수 있다는 것입니다. 예를 들면 다음과 같습니다.

무슨 일 이니? 나는 다른 플로팅 / zorder 관련 문제를 읽었지만 한 객체가 다른 객체의 뒤쪽 / 뒤쪽에있는이 유형의 동작을 보지 못했으며 대부분의 시야 각도에서 올바르게 표시되지 않습니다.

파란색면을 투명하게 만들면 아래의 플롯에서 사라질 때 표면 뒤의 빨간색 구를 볼 수 있습니다 (그래야 플로팅 라이브러리가 실제로 표면 뒤에 있다고 생각하는 것처럼 보입니다).

해결법

  1. ==============================

    1.이것은 여전히 ​​Matplotlib 1.5.3 (2016)의 문제입니다. Matplotlib 개발자의 공동 리드 인 @tacaswell이 권장하는 대안은 다른 많은 프로젝트처럼 Matplotlib을 백엔드로 사용하지 않는다는 점에서 Python 라이브러리를 플로팅하는 것 중에서 비교적 독특한 Mayavi를 사용하여 3D 플로팅을 처리하는 것입니다 (Pandas, Seaborn, ggplot).

    이것은 여전히 ​​Matplotlib 1.5.3 (2016)의 문제입니다. Matplotlib 개발자의 공동 리드 인 @tacaswell이 권장하는 대안은 다른 많은 프로젝트처럼 Matplotlib을 백엔드로 사용하지 않는다는 점에서 Python 라이브러리를 플로팅하는 것 중에서 비교적 독특한 Mayavi를 사용하여 3D 플로팅을 처리하는 것입니다 (Pandas, Seaborn, ggplot).

    나는 Homebrew와 pip를 사용하여 최소한의 소란으로 Mayavi를 OSX에 설치할 수있었습니다.

    #/bin/bash
    # vtk is a mayavi requirement
    brew install vtk
    pip install mayavi
    # Port your matplotlib code to mayavi
    # Profit...
    
  2. from https://stackoverflow.com/questions/23188561/matplotlib-3d-plot-zorder-issue by cc-by-sa and MIT license