Python と Plotly を使用して 3D グラフィックを描画する方法

この記事は、Lemony Hug によるHuawei クラウド コミュニティ「Plotly Drawing 3D Graphics 」から共有されたものです。

データ視覚化の分野では、3D グラフィックスはデータ間の複雑な関係や構造を示す強力なツールです。 Python言語には豊富なデータ視覚化ライブラリがあり、その中でもPlotlyは高品質な3次元グラフィックスを描画する機能を提供する人気のツールです。この記事では、Python と Plotly を使用してさまざまなタイプの 3D グラフィックスを描画する方法とコード例を紹介します。

準備

まず、Plotly ライブラリがインストールされていることを確認します。 pip コマンドを使用してインストールできます。

pip インストールをプロットする

次に、Plotly のモジュールを使用してplotly.graph_objects3D グラフィックスを作成します。また、numpyライブラリを使用してサンプル データを生成します。

そのままplotly.graph_objectsをインポートします
numpyをnpとしてインポート

散布図を描く

まず、簡単な散布図を描きます。 3 次元データがx_datay_data、に保存されているとしますz_data

# サンプルデータを生成する
np.random.seed(42)
n_points = 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, mode='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 次元で視覚化したいとします。

# 関数を定義する
def 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 表面プロットを生成します。

ワイヤーフレームを描く

最後に、データの連続性を示すワイヤーフレームを描画します。

# ワイヤーフレームデータを生成する
theta = 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, size=(len(カテゴリ), len(カテゴリ)))
x_bar, y_bar = np.meshgrid(np.arange(len(カテゴリ)), np.arange(len(カテゴリ)))
x_bar = x_bar. flatten()
y_bar = y_bar. flatten()
z_bar = np.zeros_like(x_bar)

#棒グラフの高さを設定する
bar_heights = 値. flatten()

#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),
                  selector=dict(mode='マーカー'))
fig.update_layout(scene=dict(xaxis=dict(backgroundcolor="rgb(200, 200, 230)",
                                       グリッドカラー = "白",
                                       showbackground=True、
                                       ゼロラインカラー="白")、
                             yaxis=dict(backgroundcolor="rgb(230, 200,230)",
                                       グリッドカラー = "白",
                                       showbackground=True、
                                       ゼロラインカラー="白")、
                             zaxis=dict(backgroundcolor="rgb(230, 230,200)",
                                       グリッドカラー = "白",
                                       showbackground=True、
                                       ゼロラインカラー="ホワイト"))、
                  title='カスタマイズされた 3D 散布図')
fig.show()

インタラクティブな 3D グラフィックス

Plotly はインタラクティブな 3 次元グラフィックスの作成もサポートしており、ユーザーはマウス操作を通じてデータを探索できます。インタラクティブな散布図の例を次に示します。

# インタラクティブな散布図を作成する
fig = go.Figure(data=[go.Scatter3d(x=x_data, y=y_data, z=z_data, mode='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 ライブラリの機能を継続的に探索して適用することで、データ視覚化の有効性と効率をさらに向上させることができ、私たちの仕事とプロジェクトにより多くの価値と成果をもたらすことができます。

 

クリックしてフォローし、できるだけ早くHuawei Cloudの新しいテクノロジーについて学びましょう~

 

マイクロソフトの中国AIチームは数百人を巻き込んで米国に渡ったが、 未知のオープンソースプロジェクトはどれだけの収益をもたらすことができるだろうか? 華中科技大学のオープンソースミラーステーション の立場が調整されたとファーウェイが正式に発表した。 外部ネットワークへのアクセスを正式にオープンしました。 詐欺師は TeamViewer を使用して 398 万件を転送しました。リモート デスクトップ ベンダーは何をすべきでしょうか? 初のフロントエンド視覚化ライブラリであり、Baidu の有名なオープンソース プロジェクト ECharts の創設者である - 有名なオープンソース企業の元従業員が「海に行った」というニュースを伝えた: 部下からの挑戦を受けて、技術者はリーダーは激怒し、無礼になり、妊娠中の女性従業員を解雇しました。OpenAI が AI にポルノ コンテンツを生成させることを検討したと 、Rust Foundation に報告されました。time.sleep (6) の役割を教えてください。 ?
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/4526289/blog/11148794