【Python】Matplotlibで目盛りラベルを残したままグラフのフレーム(枠線)を削除する方法
Matplotlibで作成したグラフから、軸の目盛りラベルはそのまま残しつつ、外枠(フレーム)だけを取り除きたいケースはよくあります。例えば、よりシンプルで洗練された見た目のチャートを作りたい場合などに有効です。
ここでは、具体的な手順とサンプルコードを紹介します。
実装手順
- figureサイズの設定 — グラフのサイズを指定し、
figure.autolayoutを有効にしてサブプロット間および周囲の余白を自動調整します。 - データの準備 — プロット用の y データポイントのリストを作成します。
- グラフの描画 —
plot()メソッドを使ってyデータポイントをプロットします。 - スパイン(枠線)の非表示 — 左・右・上・下の4つのスパインに対して
set_visible(False)メソッドを呼び出し、フレームを非表示にします。 - 図の表示 —
show()メソッドで図を画面に表示します。
サンプルコード
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
y = [0, 2, 1, 5, 1, 2, 0]
plt.plot(y, color='red', lw=7)
for pos in ['right', 'top', 'bottom', 'left']:
plt.gca().spines[pos].set_visible(False)
plt.show()
コードのポイント
重要なのは最後の for ループ部分です。plt.gca() で現在のAxesオブジェクトを取得し、その spines ディクショナリから 'right'(右)、'top'(上)、'bottom'(下)、'left'(左)の各スパインにアクセスしています。それぞれに対して set_visible(False) を呼び出すことで、目盛りラベルや目盛り自体は保持したまま、枠線のみを消すことができます。
なお、すべてではなく一部のスパインだけを消したい場合は、ループ対象のリストから該当する位置名を除けばOKです。例えば下側の枠線だけを残したい場合は ['right', 'top', 'left'] のみを指定します。
出力結果

このように、赤色の折れ線グラフと目盛りラベルはそのまま表示され、周囲の四角いフレームだけがきれいに取り除かれたグラフが完成します。プレゼン資料やレポート向けに、すっきりとしたデザインの図表を作成したいときにぜひ活用してください。
-
Matplotlibのサブプロットで目盛りラベルを回転させる方法
Matplotlibのサブプロットで目盛りラベル(ティックラベル)を回転させるには、set_xticklabels() または set_yticklabels() メソッドに rotation 引数を指定します。 目盛りラベルを回転させる手順 軸の目盛りとして使用する数値のリスト(x)を作成します。 subplot() を使って現在の図にサブプロットを追加し、その軸オブジェクトを取得します。 set_xticks() および set_yticks() メソッドを使い、手順1で作成したリスト x をもとにX軸・Y軸それぞれに目盛りを設定します。 set_xticklabels() と set_
-
Matplotlibでサブプロットの目盛りラベルの密度を下げる方法
Matplotlibでグラフを描画する際、目盛りラベルが多すぎると表示が混雑して読みにくくなることがあります。この問題を解決するには、density(密度)変数に小さな値を設定することで、目盛りラベルの密度を下げることができます。手順目盛りの間隔を制御するための変数 density を初期化します。NumPyを使用して x および y のデータポイントを作成します。plot() メソッドを使って x と y のデータポイントをプロットします。xticks() メソッドを使用して、X軸の目盛り位置とラベルを設定します。show() メソッドで図を表示します。コード例import numpy as