値のリストから目盛りを作成する

Beginner

This tutorial is from open-source community. Access the source code

はじめに

このチュートリアルでは、Matplotlib を使って値のリストから目盛りラベルを作成する方法を学びます。.Axes.set_xticksを使用すると、目盛りラベルは現在選択されている目盛りに設定されます。ただし、場合によっては Matplotlib に目盛りの数とその間隔を動的に選択させる方が良いこともあります。この場合、目盛りの値から目盛りラベルを決定したい場合があります。このチュートリアルでは、その方法を紹介します。

VM のヒント

VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。

Jupyter Notebook の読み込みには数秒かかる場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。

学習中に問題がある場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

必要なライブラリをインポートする

このチュートリアルで必要なライブラリをインポートします。それは、matplotlib.pyplotmatplotlib.ticker からの MaxNLocator です。

import matplotlib.pyplot as plt
from matplotlib.ticker import MaxNLocator

グラフと軸のオブジェクトを作成する

次に、matplotlib.pyplotsubplots() メソッドを使ってグラフと軸のオブジェクトを作成します。

fig, ax = plt.subplots()

x と y のデータを作成する

Python の組み込み関数 rangerange() メソッドを使って、x と y のデータを作成します。

xs = range(26)
ys = range(26)

ラベルのリストを作成する

アルファベットの文字列を文字のリストに変換するために、list() メソッドを使ってラベルのリストを作成します。

labels = list('abcdefghijklmnopqrstuvwxyz')

フォーマット関数を作成する

メモリ位置の値から目盛りラベルを決定するフォーマット関数を作成します。目盛り値が xs の範囲内の整数の場合、labels リストから対応するラベルが返されます。それ以外の場合は空の文字列を返します。

def format_fn(tick_val, tick_pos):
    if int(tick_val) in xs:
        return labels[int(tick_val)]
    else:
        return ''

目盛りフォーマッタとロケータを設定する

ステップ 5 で作成したフォーマット関数を使って、x 軸の目盛りフォーマッタを設定します。set_major_formatter() メソッドを使用します。また、x 軸の目盛りロケータを MaxNLocator(integer=True) に設定して、目盛り値が整数値をとるようにします。

ax.xaxis.set_major_formatter(format_fn)
ax.xaxis.set_major_locator(MaxNLocator(integer=True))

グラフを作成する

axes オブジェクトの plot() メソッドを使ってグラフを作成し、xsys のデータを渡します。

ax.plot(xs, ys)

グラフを表示する

最後に、matplotlib.pyplotshow() メソッドを使ってグラフを表示します。

plt.show()

まとめ

このチュートリアルでは、Matplotlib を使って値のリストから目盛りラベルを作成する方法を学びました。まず、グラフと軸のオブジェクトを作成し、次に x と y のデータを作成し、最後にラベルのリストを作成しました。その後、目盛りの値から目盛りラベルを決定するフォーマット関数を作成し、目盛りフォーマッタとロケータを設定しました。最後に、グラフを作成して表示しました。