はじめに
Matplotlib は、Python における強力なグラフ描画ライブラリです。線グラフ、散布図、棒グラフ、ヒストグラムなど、様々なカスタマイズ可能な可視化を提供します。Matplotlib が提供する可視化の 1 つが矢印プロットです。矢印プロットは、矢印の長さ、幅、またはアルファ(不透明度)を使用して、マルコフモデルの遷移確率などの矢印の「強さ」をエンコードするために使用されます。
この実験では、Matplotlib を使用して矢印プロットを作成する方法を学びます。矢印グラフを描画するために、make_arrow_graph()関数を使用します。
VM のヒント
VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。
場合によっては、Jupyter Notebook が読み込み終わるまで数秒待つ必要があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
ライブラリのインポートと関数の定義
最初のステップは、必要なライブラリをインポートして、make_arrow_graph()関数を定義することです。この関数は、軸、データ、サイズ、表示、形状、最大矢印幅、矢印間隔、アルファ、データの正規化、ec、ラベルカラー、および kwargs などのさまざまなパラメータを受け取ります。これらのパラメータを使用して矢印プロットを作成します。
## ライブラリのインポート
import itertools
import matplotlib.pyplot as plt
import numpy as np
## 関数の定義
def make_arrow_graph(ax, data, size=4, display='length', shape='right',
max_arrow_width=0.03, arrow_sep=0.02, alpha=0.5,
normalize_data=False, ec=None, labelcolor=None,
**kwargs):
"""
矢印プロットを作成します。
パラメータ
----------
ax
グラフが描画される軸
data
塩基とペア遷移の確率を含む辞書
size
プロットのサイズ(インチ)
display : {'length', 'width', 'alpha'}
変更する矢印のプロパティ
shape : {'full', 'left', 'right'}
完全矢印または半分の矢印
max_arrow_width : float
データ座標での矢印の最大幅
arrow_sep : float
データ座標でのペア内の矢印間の間隔
alpha : float
矢印の最大不透明度
**kwargs
`.FancyArrow` プロパティ、たとえば *linewidth* または *edgecolor*
"""
## コードブロック
データを定義して矢印グラフを描画する
2 番目のステップは、データを定義して、make_arrow_graph()関数を使って矢印グラフを描画することです。データを、塩基とペア遷移の確率を持つ辞書として定義します。また、プロットのサイズを 4 に設定し、データを正規化します。
## データを定義する
data = {
'A': 0.4, 'T': 0.3, 'G': 0.6, 'C': 0.2,
'AT': 0.4, 'AC': 0.3, 'AG': 0.2,
'TA': 0.2, 'TC': 0.3, 'TG': 0.4,
'CT': 0.2, 'CG': 0.3, 'CA': 0.2,
'GA': 0.1, 'GT': 0.4, 'GC': 0.1,
}
## 矢印グラフを描画する
size = 4
fig = plt.figure(figsize=(3 * size, size), layout="constrained")
axs = fig.subplot_mosaic([["length", "width", "alpha"]])
for display, ax in axs.items():
make_arrow_graph(
ax, data, display=display, linewidth=0.001, edgecolor=None,
normalize_data=True, size=size)
plt.show()
矢印グラフをカスタマイズする
3 番目のステップは、矢印グラフをカスタマイズすることです。displayパラメータを使って、表示する矢印のプロパティを変更できます。また、shapeパラメータを使って矢印の形状を変更できます。それぞれmax_arrow_widthとarrow_sepパラメータを使って、矢印の幅と間隔を調整できます。alphaパラメータを使って矢印の透明度を変更できます。また、labelcolorパラメータを使ってラベルの色を変更できます。
## カスタマイズを加えて矢印グラフを描画する
size = 4
fig = plt.figure(figsize=(3 * size, size), layout="constrained")
axs = fig.subplot_mosaic([["length", "width", "alpha"]])
for display, ax in axs.items():
make_arrow_graph(
ax, data, display=display, linewidth=0.001, edgecolor=None,
normalize_data=True, size=size, shape='full', max_arrow_width=0.05,
arrow_sep=0.03, alpha=0.7, labelcolor='white')
plt.show()
矢印グラフを解釈する
4 番目のステップは、矢印グラフを解釈することです。矢印の長さ、幅、および不透明度は、矢印の強さを表します。矢印グラフは、矢印の長さ、幅、またはアルファ(不透明度)を使用して、マルコフモデルの遷移確率などの矢印の「強さ」をエンコードするために使用できます。矢印のラベルは、塩基とペア遷移の確率を表します。
まとめ
この実験では、Matplotlib を使って矢印プロットを作成する方法を学びました。矢印グラフを描画するためにmake_arrow_graph()関数を使用しました。表示する矢印のプロパティを変更し、矢印の形状を変更し、矢印の幅と間隔を調整し、矢印の透明度を変更し、ラベルの色を変更することで矢印グラフをカスタマイズしました。また、矢印の長さ、幅、および不透明度が矢印の強さを表し、矢印のラベルが塩基とペア遷移の確率を表すことを理解することで矢印グラフを解釈しました。