はじめに
このチュートリアルでは、Python の Matplotlib ライブラリを使用して、x 軸の目盛りラベルをグラフの上部に移動する方法を学びます。デフォルトでは、Matplotlib は x 軸のラベルをグラフの下部に配置します。ただし、特にグラフが混雑している場合や、長いラベルが他の要素と重なる可能性がある場合には、視覚化を向上させるために上部に配置したいことがあります。
このテクニックは、グラフのスペースの使用を最適化し、読みやすさを向上させる必要があるデータ視覚化のシナリオで特に有用です。簡単なグラフを作成し、目盛りラベルの位置を段階的に操作する方法を学びます。
VM のヒント
VM の起動が完了したら、左上隅をクリックして Notebook タブに切り替え、Jupyter Notebook を開いて練習を行ってください。

Jupyter Notebook の読み込みが完了するまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
このチュートリアル中に何か問題が発生した場合は、いつでも Labby に相談してください。セッション終了後にフィードバックを提供していただければ、問題を迅速に解決できます。
Matplotlib の理解とノートブックの作成
最初のステップでは、Matplotlib について学び、データ視覚化のタスク用に新しい Jupyter ノートブックを作成します。
Matplotlib とは何か?
Matplotlib は、Python で静的、アニメーション、インタラクティブな視覚化を作成するための包括的なライブラリです。グラフをアプリケーションに埋め込むためのオブジェクト指向 API を提供し、科学者、エンジニア、データアナリストによってデータ視覚化に広く使用されています。
新しいノートブックを作成する
ノートブックの最初のセルで、Matplotlib ライブラリをインポートしましょう。以下のコードを入力し、Shift+Enter を押してセルを実行します。
import matplotlib.pyplot as plt
import numpy as np
## Check the Matplotlib version
print(f"NumPy version: {np.__version__}")

このコードを実行すると、以下のような出力が表示されるはずです。
NumPy version: 2.0.0
正確なバージョン番号は、使用環境によって異なる場合があります。
これで Matplotlib がインポートされ、使用できる状態になりました。plt は pyplot モジュールに対する一般的なエイリアスで、グラフを作成するための MATLAB のようなインターフェースを提供します。
デフォルト設定で基本的なグラフを作成する
Matplotlib をインポートしたので、デフォルト設定で簡単なグラフを作成し、軸と目盛りラベルがデフォルトでどのように配置されるかを理解しましょう。
Matplotlib のコンポーネントを理解する
Matplotlib では、グラフはいくつかのコンポーネントで構成されています。
- Figure(図): グラフ全体のコンテナ
- Axes(軸領域): 独自の座標系でデータがプロットされる領域
- Axis(軸): 座標系を定義する数直線のようなオブジェクト
- Ticks(目盛り): 特定の値を示す軸上の目印
- Tick Labels(目盛りラベル): 各目盛りの値を示すテキストラベル
デフォルトでは、x 軸の目盛りラベルはグラフの下部に表示されます。
簡単なグラフを作成する
ノートブックの新しいセルで、簡単な折れ線グラフを作成しましょう。
## Create a figure and a set of axes
fig, ax = plt.subplots(figsize=(8, 5))
## Generate some data
x = np.arange(0, 10, 1)
y = np.sin(x)
## Plot the data
ax.plot(x, y, marker='o', linestyle='-', color='blue', label='sin(x)')
## Add a title and labels
ax.set_title('A Simple Sine Wave Plot')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis (sin(x))')
## Add a grid and legend
ax.grid(True, linestyle='--', alpha=0.7)
ax.legend()
## Display the plot
plt.show()
print("Notice that the x-axis tick labels are at the bottom of the plot by default.")
このコードを実行すると、x 軸の目盛りラベルがグラフの下部にある正弦波のグラフが表示されます。これは Matplotlib のデフォルトの位置です。
グラフの構造や目盛りラベルの配置をしばらく観察してみましょう。この理解は、次のステップで行う変更を理解するのに役立ちます。
X 軸の目盛りラベルを上部に移動する
目盛りラベルのデフォルトの配置を理解したので、x 軸の目盛りラベルをグラフの上部に移動しましょう。
目盛りパラメータを理解する
Matplotlib は tick_params() メソッドを提供しており、これを使って目盛りと目盛りラベルの表示を制御できます。このメソッドを使うと以下のことができます。
- 目盛りと目盛りラベルの表示/非表示を切り替える
- それらの位置(上部、下部、左部、右部)を変更する
- サイズ、色、その他のプロパティを調整する
X 軸の目盛りラベルを上部に配置したグラフを作成する
x 軸の目盛りラベルを上部に移動した新しいグラフを作成しましょう。
## Create a new figure and a set of axes
fig, ax = plt.subplots(figsize=(8, 5))
## Generate some data
x = np.arange(0, 10, 1)
y = np.cos(x)
## Plot the data
ax.plot(x, y, marker='s', linestyle='-', color='green', label='cos(x)')
## Move the x-axis tick labels to the top
ax.tick_params(
axis='x', ## Apply changes to the x-axis
top=True, ## Show ticks on the top side
labeltop=True, ## Show tick labels on the top side
bottom=False, ## Hide ticks on the bottom side
labelbottom=False ## Hide tick labels on the bottom side
)
## Add a title and labels
ax.set_title('Cosine Wave with X-Axis Tick Labels at the Top')
ax.set_xlabel('X-axis (now at the top!)')
ax.set_ylabel('Y-axis (cos(x))')
## Add a grid and legend
ax.grid(True, linestyle='--', alpha=0.7)
ax.legend()
## Display the plot
plt.show()
print("Now the x-axis tick labels are at the top of the plot!")
このコードを実行すると、x 軸の目盛りラベルがグラフの上部にある余弦波のグラフが表示されます。
tick_params() メソッドがいくつかのパラメータとともにどのように使われているかに注目してください。
axis='x': x 軸を変更することを指定します。top=Trueとlabeltop=True: 上部に目盛りとラベルを表示します。bottom=Falseとlabelbottom=False: 下部の目盛りとラベルを非表示にします。
これにより、x 軸のラベルが下部ではなく上部に配置された、きれいなデータの表示が得られます。
グラフをさらにカスタマイズする
x 軸の目盛りラベルを上部に移動したので、グラフをさらにカスタマイズして、視覚的に魅力的で情報量の多いものにしましょう。
高度なグラフカスタマイズ手法
Matplotlib はグラフをカスタマイズするための多数のオプションを提供しています。これらのオプションのいくつかを探索しましょう。
## Create a new figure and a set of axes
fig, ax = plt.subplots(figsize=(10, 6))
## Generate some data with more points for a smoother curve
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
## Plot multiple datasets
ax.plot(x, y1, linewidth=2, color='blue', label='sin(x)')
ax.plot(x, y2, linewidth=2, color='red', label='cos(x)')
## Fill the area between curves
ax.fill_between(x, y1, y2, where=(y1 > y2), alpha=0.3, color='green', interpolate=True)
ax.fill_between(x, y1, y2, where=(y1 <= y2), alpha=0.3, color='purple', interpolate=True)
## Move the x-axis tick labels to the top
ax.tick_params(
axis='x',
top=True,
labeltop=True,
bottom=False,
labelbottom=False
)
## Customize tick labels
ax.set_xticks(np.arange(0, 2*np.pi + 0.1, np.pi/2))
ax.set_xticklabels(['0', 'π/2', 'π', '3π/2', '2π'])
## Add title and labels with custom styles
ax.set_title('Sine and Cosine Functions with Customized X-Axis Labels at the Top',
fontsize=14, fontweight='bold', pad=20)
ax.set_xlabel('Angle (radians)', fontsize=12)
ax.set_ylabel('Function Value', fontsize=12)
## Add a grid and customize its appearance
ax.grid(True, linestyle='--', alpha=0.7, which='both')
## Customize the axis limits
ax.set_ylim(-1.2, 1.2)
## Add a legend with custom location and style
ax.legend(loc='upper right', fontsize=12, framealpha=0.8)
## Add annotations to highlight important points
ax.annotate('Maximum', xy=(np.pi/2, 1), xytext=(np.pi/2, 1.1),
arrowprops=dict(facecolor='black', shrink=0.05, width=1.5),
fontsize=10, ha='center')
## Display the plot
plt.tight_layout() ## Adjust spacing for better appearance
plt.show()
print("We have created a fully customized plot with x-axis tick labels at the top!")
このコードを実行すると、以下の要素を持つ、より洗練されたプロフェッショナルな見た目のグラフが表示されます。
- 2 つの曲線(正弦波と余弦波)
- 曲線間の色付き領域
- カスタム目盛りラベル(π 表記を使用)
- 重要な特徴を指す注釈
- より良い間隔とスタイル
tick_params() メソッドを使って x 軸の目盛りラベルを上部に配置したまま、追加のカスタマイズでグラフを強化したことに注目してください。
カスタマイズの理解
追加したいくつかの重要なカスタマイズを分解してみましょう。
fill_between(): 正弦波と余弦波の曲線間に色付き領域を作成します。set_xticks()とset_xticklabels(): 目盛りの位置とラベルをカスタマイズします。tight_layout(): グラフの間隔を自動的に調整して、見た目を改善します。annotate(): 特定の点を指す矢印付きのテキストを追加します。- 様々な要素のフォント、色、スタイルをカスタマイズします。
これらのカスタマイズは、x 軸の目盛りラベルを上部に配置したまま、視覚的に魅力的で情報量の多いグラフを作成する方法を示しています。
グラフの保存と共有
最後のステップは、カスタマイズしたグラフを保存して、レポートやプレゼンテーションに含めたり、他の人と共有できるようにすることです。
様々な形式でグラフを保存する
Matplotlib を使うと、PNG、JPG、PDF、SVG など、様々な形式でグラフを保存できます。異なる形式でグラフを保存する方法を学んでみましょう。
## Create a plot similar to our previous customized one
fig, ax = plt.subplots(figsize=(10, 6))
## Generate data
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
## Plot the data
ax.plot(x, y1, linewidth=2, color='blue', label='sin(x)')
ax.plot(x, y2, linewidth=2, color='red', label='cos(x)')
## Move the x-axis tick labels to the top
ax.tick_params(
axis='x',
top=True,
labeltop=True,
bottom=False,
labelbottom=False
)
## Customize tick labels
ax.set_xticks(np.arange(0, 2*np.pi + 0.1, np.pi/2))
ax.set_xticklabels(['0', 'π/2', 'π', '3π/2', '2π'])
## Add title and labels
ax.set_title('Plot with X-Axis Labels at the Top', fontsize=14)
ax.set_xlabel('X-axis at the top')
ax.set_ylabel('Y-axis')
## Add grid and legend
ax.grid(True)
ax.legend()
## Save the figure in different formats
plt.savefig('plot_with_top_xlabels.png', dpi=300, bbox_inches='tight')
plt.savefig('plot_with_top_xlabels.pdf', bbox_inches='tight')
plt.savefig('plot_with_top_xlabels.svg', bbox_inches='tight')
## Show the plot
plt.show()
print("The plot has been saved in PNG, PDF, and SVG formats in the current directory.")
このコードを実行すると、グラフは 3 つの異なる形式で保存されます。
- PNG: ウェブや一般的な用途に適したラスター画像形式
- PDF: 出版物やレポートに最適なベクター形式
- SVG: ウェブや編集可能なグラフィックスに最適なベクター形式
ファイルは、Jupyter Notebook の現在の作業ディレクトリに保存されます。
保存パラメータの理解
savefig() で使用されるパラメータを見てみましょう。
dpi=300: PNG などのラスター形式の解像度(1 インチあたりのドット数)を設定します。bbox_inches='tight': 不要な余白をなくし、すべての要素を含むように図の境界を自動的に調整します。
保存したファイルを表示する
保存したファイルは、Jupyter のファイルブラウザを使って表示できます。
- 左上の「Jupyter」ロゴをクリックします。
- ファイルブラウザで、保存された画像ファイルが表示されます。
- 任意のファイルをクリックして、表示またはダウンロードします。
追加のグラフエクスポートオプション
保存するグラフをより細かく制御するには、図のサイズをカスタマイズしたり、背景を調整したり、必要に応じて DPI を変更したりできます。
## Control the background color and transparency
fig.patch.set_facecolor('white') ## Set figure background color
fig.patch.set_alpha(0.8) ## Set background transparency
## Save with custom settings
plt.savefig('custom_background_plot.png',
dpi=400, ## Higher resolution
facecolor=fig.get_facecolor(), ## Use the figure's background color
edgecolor='none', ## No edge color
bbox_inches='tight', ## Tight layout
pad_inches=0.1) ## Add a small padding
print("A customized plot has been saved with specialized export settings.")
これは、出力形式と外観を精密に制御してグラフを保存する方法を示しています。
まとめ
このチュートリアルでは、Matplotlib を使って x 軸の目盛りラベルをデフォルトの下部位置からグラフの上部に移動する方法を学びました。この手法は、ラベルが長いグラフを扱う場合や、スペースの使用を最適化する必要がある場合に役立ちます。
以下の重要なポイントをカバーしました。
- Matplotlib の基本と、図 (figure)、軸 (axes)、目盛りラベルなどの構成要素を理解する
- デフォルト設定で簡単なグラフを作成し、x 軸の目盛りラベルの標準的な配置を確認する
tick_params()メソッドを使って x 軸の目盛りラベルをグラフの上部に移動する- 追加のカスタマイズでグラフを強化し、情報量を増やし、視覚的に魅力的にする
- 共有や公開のために、様々な形式でグラフを保存する
この知識を使うことで、特に複雑なデータセットを扱う場合や、特定のレイアウト要件があるグラフを作成する場合に、より読みやすくプロフェッショナルなビジュアライゼーションを作成できます。
さらに学習するために、以下のような他の Matplotlib のカスタマイズオプションを探索すると良いでしょう。
- 異なる目盛りラベル位置のサブプロットを作成する
- 目盛りと目盛りラベルの外観(色、フォント、サイズなど)をカスタマイズする
- 棒グラフ、散布図、ヒストグラムなどの異なるタイプのグラフで、カスタム目盛り位置を使用する
Matplotlib の柔軟性により、特定のビジュアライゼーションニーズに合わせた広範なカスタマイズが可能です。