0Pricing
Pandas & NumPy Academy · レッスン

ラベル、タイトル、図の保存

軸ラベル、タイトル、凡例、目盛りの書式を追加し、savefig()で出版品質の図を保存します。

「ラベル、タイトル、図の保存」はCoddyKit上の無料Pandas & NumPy Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPandas & NumPy Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Pandas & NumPy Academyコースには全4レッスンが含まれています。

プロットを出版用の図に仕上げる

グラフは、軸にラベルが付いていて、タイトルが要点を説明し、用途に十分な解像度で保存されて初めて効果を発揮します。このレッスンでは、簡単な探索用プロットを、レポート、ダッシュボード、学術論文で使える洗練された図に仕上げるための最終調整を扱います。具体的には、軸ラベル、目盛りの書式設定、タイトル、凡例、注釈、ファイルへの書き出しを取り上げます。

set_xlabelとset_ylabelによる軸ラベル

ax.set_xlabel()とax.set_ylabel()を使って、説明的な軸ラベルを設定します。ラベルには必ず単位を含めてください(単に'Revenue'とするのではなく、たとえば'Revenue (USD)'とします)。プレゼンテーション用にラベルを大きくするにはfontsizeを使い、目盛りの文字が大きいときに軸とラベルの間隔を広げるにはlabelpadを使います。

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots(figsize=(7, 4))
x = np.arange(1, 13)
y = np.random.randint(100, 500, 12)
ax.plot(x, y, 'o-', color='steelblue')

ax.set_xlabel('Month', fontsize=12, labelpad=8)
ax.set_ylabel('Revenue (USD thousands)', fontsize=12, labelpad=8)
# plt.show()
plt.close()

set_titleとsuptitleによるタイトル

ax.set_title()は、単一のAxesの上にタイトルを設定します。複数のパネルからなる図では、fig.suptitle()を使ってすべてのサブプロットの上に共通のタイトルを追加します。fontsizeで文字サイズを、yで垂直位置を調整できます(デフォルトは1.0)。よいタイトルは、単に軸の内容を示すのではなく、グラフから読み取れる主な洞察を述べます。'Monthly Revenue'と'Revenue Peaked in Q3 and Fell 20% in Q4'を比較してみてください。

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4))
ax1.plot([1,2,3], [1,4,9])
ax1.set_title('Subplot One', fontsize=11)

ax2.bar(['A','B','C'], [3,7,2])
ax2.set_title('Subplot Two', fontsize=11)

# Shared figure title
fig.suptitle('Annual Overview Dashboard', fontsize=14, fontweight='bold', y=1.02)
plt.tight_layout()
plt.close()

目盛りラベルの調整

Matplotlibのデフォルトの目盛りラベルで十分なことも多いですが、カスタムラベルが必要になる場合もあります。ax.set_xticks()で目盛りの位置を指定し、ax.set_xticklabels()でラベルを設定します。長いラベルが重ならないように傾けるには、rotation=45を渡します。ha='right'(水平方向の配置)パラメータを指定すると、回転したラベルを目盛りに正しく揃えられます。

months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
          'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
values = np.random.randint(200, 600, 12)

fig, ax = plt.subplots(figsize=(9, 4))
ax.bar(range(12), values, color='steelblue')
ax.set_xticks(range(12))
ax.set_xticklabels(months, rotation=45, ha='right', fontsize=10)
ax.set_ylabel('Revenue')
plt.tight_layout()
plt.close()

目盛り値の書式設定

matplotlib.tickerのformatterを使うと、目盛り値を人間が読みやすい形式で表示できます。FuncFormatterには、目盛り値を受け取り、書式設定した文字列を返す関数を渡します。よく使う形式には、3桁区切り、通貨記号、パーセント記号、科学表記があります。ax.yaxis.set_major_formatter(formatter)で適用します。

from matplotlib.ticker import FuncFormatter

def millions_fmt(x, pos):
    return f'${x/1e6:.1f}M'

fig, ax = plt.subplots(figsize=(7, 4))
ax.bar(['Q1', 'Q2', 'Q3', 'Q4'], [1.2e6, 1.8e6, 2.1e6, 1.9e6], color='steelblue')
ax.yaxis.set_major_formatter(FuncFormatter(millions_fmt))
ax.set_title('Quarterly Revenue')
ax.set_ylabel('Revenue')
plt.tight_layout()
plt.close()

ax.legend()による凡例

labelパラメータが設定されたすべてのプロット要素の凡例を表示するには、ax.legend()を呼び出します。loc(位置。例:'upper right'、'lower left')、ncol(列数)、framealpha(枠の透明度)、fontsizeでカスタマイズできます。プロット領域の外側に凡例を配置するには、bbox_to_anchorとlocを組み合わせて使います。

fig, ax = plt.subplots(figsize=(7, 4))
for region, color in [('East','steelblue'),('West','coral'),('North','green')]:
    ax.plot(range(12), np.random.randint(100, 400, 12),
            marker='o', label=region, color=color)

ax.legend(loc='upper right', ncol=1, framealpha=0.8, fontsize=10)
ax.set_title('Monthly Sales by Region')
plt.close()

テキスト注釈の追加

ax.annotate(text, xy=(x_point, y_point), xytext=(x_text, y_text), arrowprops=...)を使うと、特定のデータポイントを指す任意の矢印付きのテキストラベルを追加できます。グラフ上の最大値、異常値、重要なイベントを強調するときに便利です。arrowprops辞書で矢印のスタイルを制御します。arrowstyle='->'はシンプルな矢印です。

y_vals = np.array([120, 180, 310, 250, 420, 380, 290])
x_vals = np.arange(len(y_vals))
peak_idx = np.argmax(y_vals)

fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(x_vals, y_vals, 'o-', color='steelblue')
ax.annotate(f'Peak: {y_vals[peak_idx]}',
            xy=(peak_idx, y_vals[peak_idx]),
            xytext=(peak_idx - 2, y_vals[peak_idx] + 30),
            arrowprops={'arrowstyle': '->', 'color': 'red'},
            fontsize=10, color='red')
plt.close()

水平および垂直の基準線の追加

ax.axhline(y_value)は、指定したy値の位置にAxesの全幅にわたる水平線を描画します。ax.axvline(x_value)は垂直線を描画します。どちらもcolor、linestyle、linewidthパラメータを受け取ります。基準線は、時系列グラフ上で目標値、しきい値、イベントの日付などを示すためによく使われます。

fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(range(10), np.random.randint(100, 400, 10), 'o-', color='steelblue')

# Target line
ax.axhline(y=250, color='red', linestyle='--', lw=1.5, label='Target')

# Event line
ax.axvline(x=5, color='orange', linestyle=':', lw=1.5, label='Campaign start')

ax.legend()
ax.set_title('Revenue vs Target')
plt.close()

テーマによるスタイル設定

Matplotlibには、コードを変更せずにすべての図の全体的な見た目を変更できる、いくつかの組み込みスタイルシートがあります。例として、'seaborn-v0_8-whitegrid'、'fivethirtyeight'、'ggplot'、'bmh'などがあります。スクリプトの先頭でplt.style.use('style_name')を使ってスタイルを適用します。特定のブロック内だけでスタイルを適用するには、コンテキストマネージャとしてplt.style.context('style_name')を使います。

# Apply a style globally
plt.style.use('seaborn-v0_8-whitegrid')
fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(range(10), np.random.randn(10).cumsum())
ax.set_title('Seaborn Whitegrid Style')
plt.close()

# Reset to default
plt.rcdefaults()

savefig()による図の保存

fig.savefig('filename.png')で図をファイルに保存します。主なパラメータは、dpi(1インチあたりのドット数。画面用には150、印刷用には300を使用します)、bbox_inches='tight'(ラベルが切り取られるのを防ぎます)、format(拡張子から自動判定されるか、明示的に指定します)です。よく使われる形式には、'.png'(ラスター形式。Web向け)、'.pdf'(ベクター形式。印刷向け)、'.svg'(ベクター形式。Illustratorで編集可能)があります。

fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(range(10), np.random.randn(10), 'o-')
ax.set_title('Export Example')
ax.set_xlabel('Step')
ax.set_ylabel('Value')

# Save as PNG (screen quality)
fig.savefig('/tmp/chart_screen.png', dpi=150, bbox_inches='tight')

# Save as PDF (print quality)
fig.savefig('/tmp/chart_print.pdf', dpi=300, bbox_inches='tight')

plt.close()
print('Figures saved.')

完全な例:レポート用の洗練されたグラフ

このレッスンで扱ったすべての技法を組み合わせた、完全なワークフローを見てみましょう。軸ラベル、書式設定したy軸の目盛り、水平の目標線、ピークへの注釈を含む洗練された時系列グラフを作成し、高解像度のPNGとして書き出します。これは、レポートやダッシュボードに掲載するグラフで使う基本パターンです。

from matplotlib.ticker import FuncFormatter

fig, ax = plt.subplots(figsize=(9, 5))
months = list(range(1, 13))
revenue = [120, 145, 132, 160, 175, 190, 210, 185, 220, 200, 240, 260]
peak = max(revenue)
peak_idx = revenue.index(peak)

ax.plot(months, revenue, 'o-', color='steelblue', lw=2, markersize=6)
ax.axhline(y=180, color='red', ls='--', lw=1.2, label='Target: $180K')
ax.annotate(f'Peak ${peak}K', xy=(peak_idx+1, peak),
            xytext=(peak_idx-1.5, peak+15),
            arrowprops={'arrowstyle': '->'}, fontsize=9)
ax.set_xticks(months)
ax.set_xticklabels(['Jan','Feb','Mar','Apr','May','Jun',
                    'Jul','Aug','Sep','Oct','Nov','Dec'], rotation=45, ha='right')
ax.yaxis.set_major_formatter(FuncFormatter(lambda x,p: f'${x:.0f}K'))
ax.set_title('2024 Monthly Revenue vs Target', fontsize=13, fontweight='bold')
ax.set_ylabel('Revenue')
ax.legend()
plt.tight_layout()
plt.close()

確認テスト

このレッスンで学んだラベル、タイトル、図の保存について、理解度を確認しましょう。

レッスンのまとめ

このレッスンでは、set_xlabel()/set_ylabel()/set_title()で説明的なテキストを追加する方法、FuncFormatterで目盛り値を通貨やパーセントとして書式設定する方法、ax.annotate()で重要なデータポイントを強調する矢印付きテキストラベルを追加する方法、axhline()/axvline()で基準線を描画する方法、そしてdpiとbbox_inches='tight'を指定したfig.savefig()で出版品質の画像を書き出す方法を学びました。これでMatplotlib Fundamentalsコースは完了です。次は、統計プロット用のSeabornを学びます。

よくある質問

「ラベル、タイトル、図の保存」レッスンは無料ですか?

はい。「ラベル、タイトル、図の保存」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Pandas & NumPy Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Pandas & NumPy Academyコースには全4レッスンが含まれています。

「ラベル、タイトル、図の保存」で何を学びますか?

軸ラベル、タイトル、凡例、目盛りの書式を追加し、savefig()で出版品質の図を保存します。 ブラウザで直接実行するハンズオンコードでPandas & NumPy Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Pandas & NumPy Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPandas & NumPy Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「ラベル、タイトル、図の保存」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPandas & NumPy Academyレッスンでコードを書いて実行できますか?

はい。すべてのPandas & NumPy Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. FigureとAxesの構造
  2. 折れ線グラフと散布図
  3. 棒グラフとヒストグラム
  4. ラベル、タイトル、図の保存
← Pandas & NumPy Academyに戻る