Python
 Computer >> コンピューター >  >> プログラミング >> Python

MatplotlibでPoly3DCollectionを半透明に描画する方法

Matplotlibでは、Poly3DCollectionalpha引数を使うことで、3Dポリゴンを半透明に描画できます。以下の手順に従って、透明度のあるPoly3DCollectionプロットを作成してみましょう。

実装手順

  • 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
  • 新しい図を作成するか、既存の図をアクティブにします。
  • projection='3d'を指定して、サブプロット配置の一部として~.axes.Axesを図に追加します。
  • x、y、z のデータポイントを作成します。
  • 頂点(vertices)のリストを作成します。
  • x、y、z のデータポイントをタプルのzipリストに変換します。
  • Poly3Dインスタンスのリストを取得します。
  • add_collection3d()メソッドを使用して、3Dコレクションオブジェクトをプロットに追加します。このとき、alpha=0.5を指定すると半透明になります。
  • 軸を非表示にします。
  • 図を表示するには、show()メソッドを使用します。

サンプルコード

from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d.art3d import Poly3DCollection, Line3DCollection

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

fig = plt.figure()

ax = fig.add_subplot(111, projection='3d')

x = [0, 2, 1, 1]
y = [0, 0, 1, 0]
z = [0, 0, 0, 1]

vertices = [[0, 1, 2], [0, 1, 3], [0, 2, 3], [1, 2, 3]]
tupleList = list(zip(x, y, z))
poly3d = [[tupleList[vertices[ix][iy]]
    for iy in range(len(vertices[0]))]
    for ix in range(len(vertices))]

ax.scatter(x, y, z)
ax.add_collection3d(Poly3DCollection(poly3d, facecolors='w', linewidths=1, alpha=0.5))
ax.add_collection3d(Line3DCollection(poly3d, colors='k', linewidths=2, linestyles='--'))

plt.axis('off')

plt.show()

出力結果

MatplotlibでPoly3DCollectionを半透明に描画する方法

ポイント解説

透明度を制御しているのは、Poly3DCollectionに渡しているalpha=0.5という引数です。alphaの値は0(完全に透明)から1(完全不透明)の範囲で指定でき、値を小さくするほどポリゴンが透けて見えるようになります。また、facecolors='w'で面を白く塗りつぶし、Line3DCollectionで黒色の破線によるエッジラインを重ねることで、立体構造が視覚的に分かりやすくなっています。さらにax.scatter(x, y, z)により頂点の位置もプロットしており、四面体の形状を直感的に把握できます。

  1. Matplotlibで棒グラフのラベルに絵文字を表示する方法

    Matplotlibでは、annotate()メソッドを使うことで、棒グラフの各バーの上部に絵文字をラベルとして簡単に配置できます。データの視覚化にアクセントを加えたい場合に便利なテクニックです。実装手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。頻度を表すリストfreqsと、絵文字を含むラベルのリストlabelsを作成します。figure()メソッドを使用して、新しい図を作成します。bar()メソッドで棒グラフを描画します。annotate()メソッドを使って、各バーの上に絵文字をラベルとして配置します。show()メソッドで図を表示します。コード例impo

  2. Matplotlibで3Dバー(3D棒グラフ)に凡例を追加する方法

    Matplotlibで3D棒グラフ(3Dバー)に凡例を追加したい場合、bar3d()メソッドでバーを描画し、legend()メソッドを使って凡例を配置します。この記事では、緑と赤の2種類の3Dバーを描画し、それぞれに凡例ラベルを付ける具体的な手順をサンプルコード付きで解説します。 実装の手順 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。 figure()メソッドで新しい図を作成します。 add_subplot()で projection=3d を指定し、3D描画用のAxesを追加します。 numpyを使って x3、y3、z3、dx、dy、dz の各データリス