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

【Matplotlib】3Dプロットで軸を非表示にしつつ軸ラベルだけを残す方法

Matplotlibで3Dプロットを作成する際、グリッドや軸線・目盛りなどの装飾は消したいけれど、軸ラベル(X-Axis、Y-Axis、Z-Axisなど)だけは表示しておきたいというケースがあります。この記事では、そのような「軸を非表示にして軸ラベルのみを保持する」方法を、具体的な手順とサンプルコード付きで解説します。

実現の手順

  • 図のサイズと余白の設定: figureサイズを指定し、サブプロット間および周囲のパディングを調整します。
  • 図(Figure)の作成: 新しいfigureを作成するか、既存のfigureをアクティブにします。
  • 3D Axesの追加: add_subplot()projection='3d' を指定し、サブプロットとして3D用のAxesをfigureに追加します。
  • データ点の作成: numpyを使って x、y、z、dx、dy、dz の各データを準備します。
  • 3Dバーの描画: bar3d() メソッドを使用して3D棒グラフを描画します。
  • 軸を隠すための色設定: 軸を非表示にするため、透明色(アルファ値0)のカラータプルを初期化します。
  • ペイン(面)の色を透明化: x・y・z各軸のペインカラーを、このカラータプルと同じに設定します。
  • 軸線の色を透明化: x・y・z各軸のラインカラーも同じカラータプルに設定します。
  • 目盛りの削除: set_xticks([]) などでx・y・z軸の目盛りを空にします。
  • 軸ラベルの設定: set_xlabel() / set_ylabel() / set_zlabel() でx・y・z軸のラベルを設定します。
  • 表示: show() メソッドで図を表示します。

サンプルコード

import numpy as np
from matplotlib import pyplot as plt

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

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

# データの作成
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [5, 6, 7, 8, 2, 5, 6, 3, 7, 2]
z = np.zeros(10)

dx = np.ones(10)
dy = np.ones(10)
dz = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 3Dバーの描画
ax.bar3d(x, y, z, dx, dy, dz, color="green")

# 透明色のカラータプル(軸を隠すために使用)
color_tuple = (1.0, 1.0, 1.0, 0.0)

# ペイン(背景面)を透明化
ax.w_xaxis.set_pane_color(color_tuple)
ax.w_yaxis.set_pane_color(color_tuple)
ax.w_zaxis.set_pane_color(color_tuple)

# 軸線を透明化
ax.w_xaxis.line.set_color(color_tuple)
ax.w_yaxis.line.set_color(color_tuple)
ax.w_zaxis.line.set_color(color_tuple)

# 目盛りを削除
ax.set_xticks([])
ax.set_yticks([])
ax.set_zticks([])

# 軸ラベルのみ設定
ax.set_xlabel('X-Axis')
ax.set_ylabel('Y-Axis')
ax.set_zlabel('Z-Axis')

plt.show()

出力結果

【Matplotlib】3Dプロットで軸を非表示にしつつ軸ラベルだけを残す方法

このコードを実行すると、背景のペインや軸線・目盛りがすべて消え、緑色の3DバーとX・Y・Zの軸ラベルだけが表示されたクリーンなグラフになります。プレゼン資料やレポートで、視覚的なノイズを抑えたシンプルな3Dグラフを見せたい場合に非常に便利なテクニックです。

補足:新しいバージョンのMatplotlibについて

上記のコードで使用している ax.w_xaxis は、Matplotlib 3.4以降では非推奨となっており、将来的に削除される予定です。新しいバージョンでは、代わりに以下のように ax.xaxis などを直接使用することを推奨します。

ax.xaxis.set_pane_color(color_tuple)
ax.yaxis.set_pane_color(color_tuple)
ax.zaxis.set_pane_color(color_tuple)

ax.xaxis.line.set_color(color_tuple)
ax.yaxis.line.set_color(color_tuple)
ax.zaxis.line.set_color(color_tuple)

また、よりシンプルに軸全体を非表示にしたい場合は、ax.set_axis_off() を使う方法もあります。ただし、この場合は軸ラベルも一緒に消えてしまうため、「ラベルだけを残したい」という今回の目的には、上記の透明化テクニックが適しています。

  1. Matplotlibを使ってPythonで3D密度マップを描画する方法を徹底解説

    MatplotlibとNumPyを組み合わせると、Pythonで簡単に3D密度マップ(濃度分布図)を作成できます。本記事では、pcolormesh()メソッドを使って擬似カラープロットとして密度マップを可視化する具体的な手順を、サンプルコード付きでわかりやすく解説します。 3D密度マップを描画する基本の手順 NumPyでデータを生成する:side、x、y、zの各データをNumPyで作成します。特にlinspace関数を使うと、指定した2点間の範囲を任意の分割数で等間隔にデータ生成できるため便利です。 座標行列を作成する:sideデータをもとにmeshgrid()を使い、座標ベクトルから2次元

  2. Python Matplotlibで円グラフの一部を強調表示して描画する方法

    はじめに あなたが最も好きなグラフの種類は何ですか?経営層やビジネスアナリストにこの質問をすると、即座に「円グラフ(パイチャート)!」と答えられるほど、円グラフは割合を視覚的に表現するための最も一般的な手法のひとつです。 この記事では、PythonのMatplotlibを使って基本的な円グラフを描く方法から、explodeパラメータで特定のセクターを強調表示するテクニック、さらにパーセンテージではなく実際の値をラベルとして表示するカスタム関数の実装まで、段階的に解説します。 基本的な円グラフの作成手順 ステップ1:Matplotlibのインストール まず、以下のコマンドでMatplotlibを