python 에서 Matplotlib 는 3D 그림 을 그 리 는 예제 코드 를 실현 합 니 다.

5364 단어 pythonmatplotlib3d
Matplotlib 도 3D 이미 지 를 그 릴 수 있 습 니 다.2 차원 이미지 와 달리 3 차원 이미 지 를 그 리 는 것 은 주로 mplot3d 모듈 을 통 해 이 루어 집 니 다.그러나 Matplotlib 를 사용 하여 3 차원 그림 을 그 리 는 것 은 사실상 2 차원 캔버스 에 전시 되 기 때문에 일반적으로 3 차원 그림 을 그 릴 때 도 pyplot 모듈 을 불 러 와 야 합 니 다.
mplot3d 모듈 에는 주로 4 개의 큰 유형 이 포함 되 어 있 습 니 다.각각:
  • mpl_toolkits.mplot3d.axes3d()
  • mpl_toolkits.mplot3d.axis3d()
  • mpl_toolkits.mplot3d.art3d()
  • mpl_toolkits.mplot3d.proj3d()
  • 그 중에서 axes3d()아래 에는 그림 을 그 리 는 여러 가지 유형 과 방법 이 포함 되 어 있다.axis3d()는 주로 좌표 축 과 관련 된 클래스 와 방법 을 포함한다.art3d()는 2D 이미 지 를 변환 하여 3D 로 그 릴 수 있 는 클래스 와 방법 을 포함 하고 있 습 니 다.proj3d()에는 3 차원 벡터 길 이 를 계산 하 는 등 단편 적 인 유형 과 방법 이 포함 되 어 있다.
    일반적으로 우리 가 가장 많이 사용 하 는 것 은 mpl 이다.toolkits.mplot3d.axes3d()의 mpltoolkits.mplot3d.axes3d.Axes3D()류 는 Axes3D()아래 에 서로 다른 유형의 3D 그림 을 그 리 는 방법 이 존재 합 니 다.Axes3D()를 아래 방식 으로 가 져 올 수 있 습 니 다.
    from mpl_toolkits.mplot3d.axes3d import Axes3D 또는 from mpltoolkits.mplot3d import Axes3D
    삼 차원 산 점도
    우선,우 리 는 numpy 를 가 져 와 무 작위 로 데 이 터 를 만 듭 니 다.
    
    import numpy as np
    
    # x, y, z    0   1     100     
    x = np.random.normal(0, 1, 100)
    y = np.random.normal(0, 1, 100)
    z = np.random.normal(0, 1, 100)
    
    
    다음 그림 그리 기 시작 합 니 다.첫 번 째 단 계 는 2D,3D 그래 픽 모듈 을 불 러 오 는 것 입 니 다.
    
    from mpl_toolkits.mplot3d import Axes3D
    import matplotlib.pyplot as plt
    두 번 째 단 계 는 Axes3D()를 사용 하여 3D 그래 픽 대상 을 만 듭 니 다.
    
    fig = plt.figure()
    ax = Axes3D(fig)
    마지막 으로 산 점도 그리 기 방법 으로 그림 을 그리고 표시 합 니 다.
    
    ax.scatter(x, y, z)
    plt.show()
    
    삼 차원 선형 도
    선형 도 는 산 점도 와 비슷 하 므 로 x,y,z 세 좌표 의 수 치 를 전달 해 야 한다.자세 한 코드 는 다음 과 같 습 니 다.
    
    #     
    from mpl_toolkits.mplot3d import Axes3D
    import matplotlib.pyplot as plt
    import numpy as np
    
    #     
    x = np.linspace(-6 * np.pi, 6 * np.pi, 1000)
    y = np.sin(x)
    z = np.cos(x)
    
    #    3D     
    fig = plt.figure()
    ax = Axes3D(fig)
    
    #      
    ax.plot(x, y, z)
    
    #    
    plt.show()
    
    
    삼 차원 막대 그래프
    선형 그림 을 다 그 렸 습 니 다.우 리 는 3 차원 막대 그래프 를 계속 그 려 보 았 습 니 다.사실은 그 그리 기 절차 가 위 와 똑 같 습 니 다.
    
    #     
    from mpl_toolkits.mplot3d import Axes3D
    import matplotlib.pyplot as plt
    import numpy as np
    
    #    3D     
    fig = plt.figure()
    ax = Axes3D(fig)
    
    #        
    x = [0, 1, 2, 3, 4, 5, 6]
    for i in x:
      y = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
      z = abs(np.random.normal(1, 10, 10))
      ax.bar(y, z, i, zdir='y', color=['r', 'g', 'b', 'y'])
    plt.show()
    
    
    삼 차원 도 곡면 도
    다음 에 그 려 야 할 3 차원 곡면 도 는 좀 번 거 로 워 야 한다.우 리 는 데이터 에 대해 행렬 처 리 를 해 야 한다.사실 2 차원 등고선 도 를 그 리 는 것 과 비슷 하지만 한 차원 을 더 늘 렸 을 뿐이다.
    
    #     
    import numpy as np
    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    
    #    3D     
    fig = plt.figure()
    ax = Axes3D(fig)
    
    #     
    X = np.arange(-2, 2, 0.1)
    Y = np.arange(-2, 2, 0.1)
    X, Y = np.meshgrid(X, Y)
    Z = np.sqrt(X ** 2 + Y ** 2)
    
    #      ,    cmap   
    ax.plot_surface(X, Y, Z, cmap=plt.cm.winter)
    
    plt.show()
    
    
    cmap=plt.cm.winter 는 winter 배색 방안,즉 아래 그림 의 그 라 데 이 션 색 을 사용 했다 고 밝 혔 다.
    혼합 도 그리 기
    혼합 도 는 두 가지 서로 다른 유형의 그림 을 한 장의 그림 에 그 리 는 것 이다.혼합 도 를 그 리 는 데 는 일반적으로 전제 조건 이 있다.그것 은 두 가지 서로 다른 유형의 그림 의 범위 가 대체적으로 같다 는 것 이다.그렇지 않 으 면 심각 한 비례 가 조 화 롭 지 못 해 혼합 도 를 의 미 를 잃 게 할 것 이다.
    
    # -*- coding: utf-8 -*
    #     
    from mpl_toolkits.mplot3d import Axes3D
    import numpy as np
    import matplotlib.pyplot as plt
    
    #    3D     
    fig = plt.figure()
    ax = Axes3D(fig)
    
    #          1
    x1 = np.linspace(-3 * np.pi, 3 * np.pi, 500)
    y1 = np.sin(x1)
    ax.plot(x1, y1, zs=0, c='red')
    
    #          2
    x2 = np.random.normal(0, 1, 100)
    y2 = np.random.normal(0, 1, 100)
    z2 = np.random.normal(0, 1, 100)
    ax.scatter(x2, y2, z2)
    
    #    
    plt.show()
    
    
    하위 그림 그리 기
    
    # -*- coding: utf-8 -*
    #     
    from mpl_toolkits.mplot3d import Axes3D
    import matplotlib.pyplot as plt
    import numpy as np
    
    #    1    
    fig = plt.figure()
    
    #===============
    
    #         1 
    ax1 = fig.add_subplot(1, 2, 1, projection='3d')
    
    #      1   
    x = np.linspace(-6 * np.pi, 6 * np.pi, 1000)
    y = np.sin(x)
    z = np.cos(x)
    
    #     1   
    ax1.plot(x, y, z)
    
    #===============
    
    #         2
    ax2 = fig.add_subplot(1, 2, 2, projection='3d')
    
    #      2   
    X = np.arange(-2, 2, 0.1)
    Y = np.arange(-2, 2, 0.1)
    X, Y = np.meshgrid(X, Y)
    Z = np.sqrt(X ** 2 + Y ** 2)
    
    #     2   
    ax2.plot_surface(X, Y, Z, cmap=plt.cm.winter)
    
    #    
    plt.show()
    
    
    우 리 는 이 코드 들 을 좀 볼 수 있다.두 장의 자 도 는 캔버스 한 장 위 에 그 려 져 있 기 때문에 미리 캔버스 한 장 을 만들어 야 한다.그리고.add 를 통 해subplot()는 하위 그림 을 추가 합 니 다.하위 그림 번 호 는 2 차원 그림 과 비슷 합 니 다.다만 3D 그림 을 그 릴 때 procjection='3d'인 자 를 추가 해 야 합 니 다.
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기