Matplotlib の線スタイル

MatplotlibMatplotlibBeginner
今すぐ練習

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

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

Matplotlibは、Python用の強力なデータ可視化ツールです。その特徴の1つは、グラフにカスタムの線スタイルを作成できることです。この実験では、Matplotlibで異なる線スタイルを作成して使用する方法を学びます。

VMのヒント

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

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

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

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

Matplotlibを使用するには、まずライブラリをインポートする必要があります。また、NumPyライブラリもインポートして、グラフ用のサンプルデータを生成します。

import matplotlib.pyplot as plt
import numpy as np

線スタイルを定義する

Matplotlibで線スタイルを定義する方法はいくつかあります。'solid'(実線)、'dashed'(破線)、'dotted'(点線)、'dashdot'(一点鎖線)などの事前定義済みのスタイルを使用できます。また、ダッシュタプルを使ってカスタムの線スタイルを定義することもできます。

linestyle_str = [
     ('solid', 'solid'),      ## (0, ()) または '-' と同じ
     ('dotted', 'dotted'),    ## (0, (1, 1)) または ':' と同じ
     ('dashed', 'dashed'),    ## '--' と同じ
     ('dashdot', 'dashdot')]  ## '-.' と同じ

linestyle_tuple = [
     ('loosely dotted',        (0, (1, 10))),
     ('dotted',                (0, (1, 1))),
     ('densely dotted',        (0, (1, 1))),
     ('long dash with offset', (5, (10, 3))),
     ('loosely dashed',        (0, (5, 10))),
     ('dashed',                (0, (5, 5))),
     ('densely dashed',        (0, (5, 1))),

     ('loosely dashdotted',    (0, (3, 10, 1, 10))),
     ('dashdotted',            (0, (3, 5, 1, 5))),
     ('densely dashdotted',    (0, (3, 1, 1, 1))),

     ('dashdotdotted',         (0, (3, 5, 1, 5, 1, 5))),
     ('loosely dashdotdotted', (0, (3, 10, 1, 10, 1, 10))),
     ('densely dashdotdotted', (0, (3, 1, 1, 1, 1, 1)))]

線スタイルを描画する関数を作成する

異なる線スタイルを描画する関数を作成できます。この関数は、軸オブジェクト、線スタイルのリスト、およびタイトルを入力パラメータとして受け取ります。

def plot_linestyles(ax, linestyles, title):
    X, Y = np.linspace(0, 100, 10), np.zeros(10)
    yticklabels = []

    for i, (name, linestyle) in enumerate(linestyles):
        ax.plot(X, Y+i, linestyle=linestyle, linewidth=1.5, color='black')
        yticklabels.append(name)

    ax.set_title(title)
    ax.set(ylim=(-0.5, len(linestyles)-0.5),
           yticks=np.arange(len(linestyles)),
           yticklabels=yticklabels)
    ax.tick_params(left=False, bottom=False, labelbottom=False)
    ax.spines[:].set_visible(False)

    for i, (name, linestyle) in enumerate(linestyles):
        ax.annotate(repr(linestyle),
                    xy=(0.0, i), xycoords=ax.get_yaxis_transform(),
                    xytext=(-6, -12), textcoords='offset points',
                    color="blue", fontsize=8, ha="right", family="monospace")

グラフを作成する

それぞれの線スタイルのセットに対して plot_linestyles 関数を呼び出すことで、グラフを作成できます。

fig, (ax0, ax1) = plt.subplots(2, 1, figsize=(10, 8), height_ratios=[1, 3])

plot_linestyles(ax0, linestyle_str[::-1], title='Named linestyles')
plot_linestyles(ax1, linestyle_tuple[::-1], title='Parametrized linestyles')

plt.tight_layout()
plt.show()

グラフを解釈する

結果のグラフは、異なる線スタイルを示しています。上部のグラフは名前付きの線スタイルを、下部のグラフはパラメータ化された線スタイルを示しています。右側の注釈は、各線スタイルに使用されるダッシュタプルを示しています。

まとめ

この実験では、Matplotlibで異なる線スタイルを作成して使用する方法を学びました。事前定義済みのスタイルとダッシュタプルを使って線スタイルを定義しました。また、異なる線スタイルを描画する関数を作成し、結果のグラフを解釈しました。