Python과 Plotly를 사용하여 3D 그래픽을 그리는 방법

이 기사 는 Lemony Hug가 Huawei 클라우드 커뮤니티 " Plotly Drawing 3D Graphics "에서 공유한 것입니다.

데이터 시각화 분야에서 3D 그래픽은 데이터 간의 복잡한 관계와 구조를 보여주는 강력한 도구입니다. Python 언어에는 풍부한 데이터 시각화 라이브러리가 있으며, 그 중 Plotly는 고품질 3차원 그래픽을 그리는 기능을 제공하는 널리 사용되는 도구입니다. 이 기사에서는 Python과 Plotly를 사용하여 다양한 유형의 3D 그래픽을 그리는 방법을 소개하고 코드 예제를 제공합니다.

준비

먼저 Plotly 라이브러리가 설치되어 있는지 확인하십시오. pip 명령을 사용하여 다음을 설치할 수 있습니다.

pip 설치 플롯

plotly.graph_objects다음으로 Plotly의 모듈을 사용하여 3D 그래픽을 만들어 보겠습니다 . 또한 numpy라이브러리를 사용하여 일부 샘플 데이터를 생성하겠습니다.

플롯으로 가져오기.graph_objects
numpy를 np로 가져오기

산점도 그리기

먼저 간단한 산점도를 그려보겠습니다. x_data, y_data에 저장된 일부 3차원 데이터가 있다고 가정합니다 z_data.

# 샘플 데이터 생성
np.random.seed(42)
n_포인트 = 100
x_data = np.random.rand(n_points)
y_data = np.random.rand(n_points)
z_data = np.random.rand(n_points)

#분산형 차트 만들기
fig = go.Figure(data=[go.Scatter3d(x=x_data, y=y_data, z=z_data, 모드='markers')])
fig.update_layout(scene=dict(xaxis_title='X', yaxis_title='Y', zaxis_title='Z'),
                  title='3D 산점도')
fig.show()

위의 코드는 3차원 공간에서 무작위로 생성된 데이터 포인트의 분포를 보여주는 간단한 3차원 산점도를 생성합니다.

표면 플롯 그리기

다음으로 표면도를 그려보겠습니다. 함수가 있고 f(x, y)그 표면을 3차원으로 시각화하고 싶다고 가정해 보겠습니다.

# 함수 정의
데프 f(x,y):
    np.sin(x) * np.cos(y)를 반환합니다.

# 그리드 데이터 생성
x_grid = np.linspace(0, 2*np.pi, 50)
y_grid = np.linspace(0, 2*np.pi, 50)
x_grid, y_grid = np.meshgrid(x_grid, y_grid)
z_grid = f(x_grid, y_grid)

#표면 플롯 생성
fig = go.Figure(data=[go.Surface(z=z_grid, x=x_grid, y=y_grid)])
fig.update_layout(scene=dict(xaxis_title='X', yaxis_title='Y', zaxis_title='Z'),
                  title='3D 표면도')
fig.show()

위의 코드는 함수의 표면을 보여주는 3D 표면 플롯을 생성합니다.

와이어프레임 그리기

마지막으로 데이터의 연속성을 보여주는 와이어프레임을 그릴 것입니다.

# 와이어프레임 데이터 생성
세타 = np.linspace(-4*np.pi, 4*np.pi, 100)
z_line = np.linspace(-2, 2, 100)
x_line = z_line * np.sin(세타)
y_line = z_line * np.cos(세타)

#와이어프레임 생성
fig = go.Figure(data=[go.Scatter3d(x=x_line, y=y_line, z=z_line, mode='lines')])
fig.update_layout(scene=dict(xaxis_title='X', yaxis_title='Y', zaxis_title='Z'),
                  title='3D 와이어프레임 플롯')
fig.show()

위의 코드는 와이어프레임을 보여주는 3D 그래픽을 생성합니다.

위의 예제를 통해 Python과 Plotly를 사용하여 다양한 유형의 3차원 그래픽을 그리는 방법을 보여주었습니다. 필요에 맞게 이러한 그래픽을 추가로 사용자 정의하고 Plotly 라이브러리의 더 풍부한 기능을 탐색할 수 있습니다. 즐거운 음모를 꾸미세요!

3D 막대 그래프 그리기

산점도, 표면도, 와이어프레임 도표 외에도 3D 막대 차트를 그려 데이터 간의 차이와 관계를 표시할 수도 있습니다.

# 샘플 데이터 생성
카테고리 = ['A', 'B', 'C', 'D']
값 = np.random.randint(1, 10, 크기=(len(카테고리), len(카테고리)))
x_bar, y_bar = np.meshgrid(np.arange(len(카테고리)), np.arange(len(카테고리)))
x_bar = x_bar.플랫튼()
y_bar = y_bar.플랫튼()
z_bar = np.zeros_like(x_bar)

#막대 차트의 높이 설정
bar_heights = 값.플랫튼()

#3D 막대 차트 만들기
fig = go.Figure(data=[go.Bar3d(x=x_bar, y=y_bar, z=z_bar, dx=1, dy=1, dz=bar_heights)])
fig.update_layout(scene=dict(xaxis_title='X', yaxis_title='Y', zaxis_title='Z'),
                  title='3D 막대 차트')
fig.show()

위의 코드는 다양한 범주와 값 간의 관계를 보여주는 3차원 막대 차트를 생성합니다.

맞춤형 그래픽 스타일

Plotly는 그래픽의 스타일, 레이아웃 및 모양을 조정할 수 있는 다양한 사용자 정의 옵션을 제공합니다. 특정 시각화 요구 사항을 충족하기 위해 필요에 따라 그래픽의 색상, 선 유형, 레이블 및 기타 속성을 수정할 수 있습니다.

# 사용자 정의 그래픽 스타일
fig.update_traces(marker=dict(color='rgb(255, 127, 14)', size=10),
                  선택기=dict(모드='마커'))
fig.update_layout(장면=dict(xaxis=dict(배경색상="rgb(200, 200, 230)",
                                       그리드컬러="흰색",
                                       쇼배경=사실,
                                       zerolinecolor="흰색"),
                             yaxis=dict(배경색상="rgb(230, 200,230)",
                                       그리드컬러="흰색",
                                       쇼배경=사실,
                                       zerolinecolor="흰색"),
                             zaxis=dict(배경색상="rgb(230, 230,200)",
                                       그리드컬러="흰색",
                                       쇼배경=사실,
                                       zerolinecolor="흰색")),
                  title='맞춤형 3D 산점도')
fig.show()

대화형 3D 그래픽

Plotly는 또한 대화형 3차원 그래픽 생성을 지원하므로 사용자는 마우스 상호 작용을 통해 데이터를 탐색할 수 있습니다. 다음은 대화형 분산형 차트의 예입니다.

# 대화형 분산형 차트 만들기
fig = go.Figure(data=[go.Scatter3d(x=x_data, y=y_data, z=z_data, 모드='markers')])
fig.update_layout(scene=dict(xaxis_title='X', yaxis_title='Y', zaxis_title='Z'),
                  title='대화형 3D 산점도')
fig.show()

데이터 포인트 위로 마우스를 가져가면 사용자는 각 데이터 포인트의 구체적인 수치를 확인하여 데이터에 대한 더 깊은 이해를 얻을 수 있습니다.

그래픽 내보내기

만족스러운 3D 그래픽을 만든 후에는 쉽게 공유하고 프레젠테이션할 수 있도록 정적 이미지나 대화형 HTML 파일로 내보낼 수 있습니다. Plotly는 편리한 내보내기 기능을 제공하므로 그래픽을 로컬 파일에 쉽게 저장할 수 있습니다.

#그래픽을 정적 이미지로 내보내기
fig.write_image("3d_plot.png")

# 그래픽을 대화형 HTML 파일로 내보내기
fig.write_html("3d_plot.html")

더 많은 기능 살펴보기

이 기사에 소개된 기능 외에도 Plotly는 애니메이션, 스프라이트, 카메라 제어 등과 같은 다른 많은 강력한 기능을 제공하여 3차원 그래픽을 더욱 향상하고 사용자 정의합니다. 공식 문서를 참조하거나 온라인 튜토리얼을 참조하여 이러한 기능에 대해 자세히 알아보고 프로젝트에 적용할 수 있습니다.

요약하다

이 기사를 통해 우리는 Python과 Plotly 라이브러리를 사용하여 산점도, 표면 플롯, 와이어프레임 플롯, 막대 차트 등 다양한 유형의 3차원 그래픽을 그리는 방법을 배웠습니다. 각 유형의 그래프를 그리는 데 필요한 기본 단계와 코드 예제를 배웠고, 그래프 스타일을 사용자 정의하고, 대화형 그래프를 만들고, 그래프를 정적 이미지 또는 대화형 HTML 파일로 내보내는 방법을 살펴보았습니다. 이러한 기술과 기능을 통해 데이터 시각화 분야에서 매력적이고 유용한 3D 그래픽을 쉽게 생성하여 데이터를 더 잘 이해하고 분석할 수 있습니다. 과학 연구, 공학 응용 또는 데이터 분석 등에서 3D 그래픽은 데이터 간의 패턴과 관계를 발견하고 연구 결과와 통찰력을 제시하는 데 도움이 되는 강력한 도구입니다. Python 및 Plotly 라이브러리의 기능을 지속적으로 탐색하고 적용함으로써 데이터 시각화의 효과와 효율성을 더욱 향상시켜 작업과 프로젝트에 더 많은 가치와 성과를 가져올 수 있습니다.

 

화웨이 클라우드의 신기술에 대해 빨리 알아보고 팔로우하려면 클릭하세요~

 

Microsoft의 중국 AI 팀은 수백 명의 사람들을 모아 미국으로갔습니다. 알려지지 않은 오픈 소스 프로젝트는 얼마나 많은 수익을 가져올 수 있습니까? Huawei는 공식적으로 Yu Chengdong의 위치가 화중 과학 기술 대학의 오픈 소스 미러 스테이션 으로 조정되었다고 발표했습니다. 사기꾼들이 TeamViewer를 사용해 외부 네트워크 접속을 공식적으로 개시했습니다 ! 원격 데스크톱 공급업체는 무엇을 해야 합니까? 최초의 프런트 엔드 시각화 라이브러리이자 Baidu의 유명한 오픈 소스 프로젝트 ECharts의 창립자 - "바다에 나간" 유명한 오픈 소스 회사의 전직 직원이 소식을 전했습니다. 리더는 격노하고 무례하게 행동하여 임신한 여성 직원을 해고했습니다. OpenAI는 AI가 포르노 콘텐츠를 생성하도록 허용하는 것을 고려했습니다. Microsoft는 Rust Foundation에 100만 달러를 기부했다고 보고했습니다. 여기서 time.sleep(6)의 역할은 무엇입니까? ?
{{o.이름}}
{{이름}}

추천

출처my.oschina.net/u/4526289/blog/11148794