この記事では主に Python で 3D 画像を描画するための Matplotlib のサンプルコードを紹介します。興味のある方は学習してください。
Matplotlib は 2 次元の画像を描画することもできます。 -次元画像。主に mplot3d モジュールを通じて実装されます。ただし、Matplotlib を使用して 3 次元画像を描画すると、実際には 2 次元のキャンバスに表示されるため、一般に 3 次元画像を描画する場合は、pyplot モジュールも読み込む必要があります。
mplot3d モジュールには主に 4 つの主要なカテゴリが含まれています: )
-
mpl_toolkits。 mplot3d.proj3d()
このうち、axes3d()には主に描画を実装するための様々なクラスやメソッドが含まれています。 axis3d() には主に座標軸に関するクラスとメソッドが含まれています。 art3d() には、2D 画像を変換し、3D 描画に使用するクラスとメソッドが含まれています。 proj3d() には、3 次元ベクトルの長さの計算など、いくつかの断片化されたクラスとメソッドが含まれています。
- 一般に、最もよく使用するのは mpl_toolkits.mplot3d.axes3d() の mpl_toolkits.mplot3d.axes3d.Axes3D() クラスで、Axes3D() の下には、さまざまなタイプの 3D グラフィックスを描画するためのメソッドがあります。 Axes3D() は次の方法でインポートできます。 from mpl_toolkits.mplot3d.axes3d import Axes3D または from mpl_toolkits.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
2 番目のステップは、Axes3D() を使用して 3D グラフィックス オブジェクトを作成することです。
fig = plt.figure() ax = Axes3D(fig)
最後に、散布図描画メソッドを呼び出して描画し、表示します。
ax.scatter(x, y, z) plt.show()
三次元折れ線グラフ
折れ線グラフは散布図に似ており、x、y、z の 3 つの座標の値を渡す必要があります。詳細なコードは以下の通りです。
# 载入模块 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()
三次元棒グラフ
折れ線グラフを描画した後、引き続き三次元棒グラフを描画してみます。実際、描画手順も上記と非常に似ています。
# 载入模块 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()
三次元曲面グラフ
次に描画する必要がある三次元曲面グラフは、データに対して行列処理を行う必要があります。実際、もう 1 つの次元が追加されることを除けば、これは 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 は、冬の配色が使用されることを意味します。これは、下の図のグラデーション色です。
混合グラフ描画
混合グラフとは、1つのグラフの中に2種類のグラフを描画することです。一般に、混合図を描くには前提条件があります。つまり、2 つの異なるタイプの図の範囲がほぼ同じであるということです。そうでないと、深刻な比例不調和が発生し、混合図が無意味になってしまいます。# -*- 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()
これらのコードを見てみましょう。 2つのサブピクチャは1つのキャンバスに描画されるため、事前にキャンバスを作成する必要があります。次に、.add_subplot() を使用してサブプロットを追加します。サブプロットのシリアル番号は 2 次元描画の場合と同様です。ただし、3D 描画を実行する場合は、projection='3d' パラメーターを追加する必要があります。
以上がPythonでMatplotlibを使って3Dグラフを描画する方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Arraysinpython、特にvianumpy、arecrucialinscientificComputing fortheirefficienty andversitility.1)彼らは、fornumericaloperations、data analysis、andmachinelearning.2)numpy'simplementation incensuresfasteroperationsthanpasteroperations.3)arayableminablecickick

Pyenv、Venv、およびAnacondaを使用して、さまざまなPythonバージョンを管理できます。 1)Pyenvを使用して、複数のPythonバージョンを管理します。Pyenvをインストールし、グローバルバージョンとローカルバージョンを設定します。 2)VENVを使用して仮想環境を作成して、プロジェクトの依存関係を分離します。 3)Anacondaを使用して、データサイエンスプロジェクトでPythonバージョンを管理します。 4)システムレベルのタスク用にシステムPythonを保持します。これらのツールと戦略を通じて、Pythonのさまざまなバージョンを効果的に管理して、プロジェクトのスムーズな実行を確保できます。

numpyarrayshaveveraladvantages-averstandardpythonarrays:1)thealmuchfasterduetocベースのインプレンテーション、2)アレモレメモリ効率、特にlargedatasets、および3)それらは、拡散化された、構造化された形成術科療法、

パフォーマンスに対する配列の均一性の影響は二重です。1)均一性により、コンパイラはメモリアクセスを最適化し、パフォーマンスを改善できます。 2)しかし、タイプの多様性を制限し、それが非効率につながる可能性があります。要するに、適切なデータ構造を選択することが重要です。

craftexecutablepythonscripts、次のようになります

numpyarraysarasarebetterfornumeroperations andmulti-dimensionaldata、whilethearraymoduleissuitable forbasic、1)numpyexcelsinperformance and forlargedatasentassandcomplexoperations.2)thearraymuremememory-effictientivearientfa

NumPyArraySareBetterforHeavyNumericalComputing、whilethearrayarayismoreSuitableformemory-constrainedprojectswithsimpledatatypes.1)numpyarraysofferarays andatiledance andpeperancedatasandatassandcomplexoperations.2)thearraymoduleisuleiseightweightandmemememe-ef

ctypesallowsinging andmanipulatingc-stylearraysinpython.1)usectypestointerfacewithclibrariesforperformance.2)createc-stylearraysfornumericalcomputations.3)passarraystocfunctions foreffientientoperations.how、how、becuutiousmorymanagemation、performanceo


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

Dreamweaver Mac版
ビジュアル Web 開発ツール

メモ帳++7.3.1
使いやすく無料のコードエディター

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ドリームウィーバー CS6
ビジュアル Web 開発ツール

ホットトピック









