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

Matplotlibで軸を非表示にした3Dバーチャートを描画する方法

Matplotlibを使って3Dの棒グラフ(3Dバー)を描画する際、軸や目盛りを表示せずにグラフだけをきれいに見せたいケースがあります。本記事では、軸なしの3Dバーをプロットする手順をサンプルコード付きで解説します。

実装の手順

  • 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
  • figure()メソッドを使用して、新しい図を作成するか既存の図をアクティブにします。
  • add_subplot()メソッドで、現在の図に3D投影のサブプロットとしてAxesを追加します。
  • NumPyを使ってx3、y3、z3のデータポイントを作成します。
  • 同様に、バーの幅・奥行き・高さに相当するdx、dy、dzのデータポイントも作成します。
  • bar3d()メソッドを使用して3Dバーを描画します。
  • 軸を非表示にするには、axis('off')を呼び出します。
  • 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()
ax1 = fig.add_subplot(111, projection='3d')
x3 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y3 = [5, 6, 7, 8, 2, 5, 6, 3, 7, 2]
z3 = np.zeros(10)
dx = np.ones(10)
dy = np.ones(10)
dz = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
ax1.bar3d(y3, x3, z3, dx, dy, dz, color="red")
ax1.axis('off')
plt.show()

コードのポイント解説

bar3d()メソッドの引数

bar3d()は以下の引数を受け取ります。

  • x, y, z: 各バーの左下隅の座標
  • dx, dy, dz: 各バーの幅(X方向)、奥行き(Y方向)、高さ(Z方向)

上記の例では、z3 = np.zeros(10)によりすべてのバーがZ=0の平面から立ち上がり、dzの値がそのまま各バーの高さになります。また、color="red"を指定することで、すべてのバーを赤色で統一しています。

axis('off')で軸を隠す

ax1.axis('off')を呼び出すことで、X軸・Y軸・Z軸のラベルや目盛り、枠線などがすべて非表示になり、3Dバーだけが浮かび上がるようなクリーンな見た目になります。プレゼン資料やインフォグラフィック用の図を作成する際に便利です。

出力結果

このコードを実行すると、軸や目盛りのない赤い3Dバーのチャートが表示されます。背景に余計な要素がないため、データそのものに視線を集中させることができます。

  1. Matplotlibで複数のX軸・Y軸をプロットする方法(twinx / twinyの使い方)

    データ分析や可視化では、スケールの異なる2つのデータ系列を同じグラフ上に重ねて表示したいケースがよくあります。Matplotlibでは、twinx() メソッドや twiny() メソッドを使うことで、X軸またはY軸を共有しながら独立したもう一方の軸を持つグラフを簡単に作成できます。 この記事では、左右に異なるY軸を持つグラフを作成する手順を、具体的なコード例とともに解説します。 複数のY軸を持つグラフの作成手順 以下の手順で、左と右に別々のY軸スケールを持つプロットを作成できます。 subplots() メソッドを使用して、図(figure)とサブプロット(axes)を作成します。 最初の

  2. MatplotlibでグラフのX軸とY軸を入れ替える方法

    Matplotlibでグラフの軸(X軸とY軸)を入れ替えたい場合、subplots()メソッドを使って図(figure)を作成し、2つのサブプロットを追加する方法が便利です。1つ目のサブプロットに曲線を描画し、そのX・Yデータを抽出して、2つ目のサブプロットの曲線に設定し直すことで、軸を入れ替えたグラフを作成できます。 手順 NumPyを使って、xとyのデータポイントを作成します。 図を作成し、2つのサブプロットを追加します。 両方のサブプロットにタイトルを設定します。 plot()メソッドを使って、xとyのデータポイントをプロットします。 get_xdata()とget_ydata()を使