バイオリンプロットの可視化のカスタマイズ

Beginner

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

はじめに

この実験では、Matplotlib を使ってバイオリンプロットをカスタマイズする方法を学びます。バイオリンプロットは、データの分布と密度を視覚化する強力なツールです。プロットの外観をカスタマイズすることで、より情報に富み、視覚的に魅力的なビジュアライゼーションを作成できます。

VM のヒント

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

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

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

テストデータを作成する

まず、バイオリンプロットに使用するためのテストデータを作成します。標準偏差が増加する 100 個の正規分布の値を持つ 4 つの配列を生成するために NumPy を使用します。

import matplotlib.pyplot as plt
import numpy as np

## create test data
np.random.seed(19680801)
data = [sorted(np.random.normal(0, std, 100)) for std in range(1, 5)]

デフォルトのバイオリンプロットを作成する

次に、Matplotlib のviolinplot関数を使用してデフォルトのバイオリンプロットを作成します。後の手順でプロットをカスタマイズする際の比較の基準となります。

## create default violin plot
fig, ax1 = plt.subplots()
ax1.set_title('Default Violin Plot')
ax1.set_ylabel('Observed Values')
ax1.violinplot(data)

バイオリンプロットの外観をカスタマイズする

ここでは、バイオリンプロットの外観をカスタマイズします。まず、showmeansshowmediansshowextremaの各引数をFalseに設定することで、Matplotlib が描画する内容を制限します。次に、set_facecolorset_alphaメソッドを使って、バイオリンの本体の色と不透明度を変更します。最後に、NumPy のpercentile関数を使って四分位数、中央値、ひげを計算し、バイオリンプロットの上に箱ひげ図の簡略化された表現を追加します。

## customize violin plot appearance
fig, ax2 = plt.subplots()
ax2.set_title('Customized Violin Plot')
ax2.set_ylabel('Observed Values')

## create violin plot
parts = ax2.violinplot(
        data, showmeans=False, showmedians=False,
        showextrema=False)

## customize violin bodies
for pc in parts['bodies']:
    pc.set_facecolor('#D43F3A')
    pc.set_edgecolor('black')
    pc.set_alpha(1)

## add box plot
quartile1, medians, quartile3 = np.percentile(data, [25, 50, 75], axis=1)
whiskers = np.array([
    adjacent_values(sorted_array, q1, q3)
    for sorted_array, q1, q3 in zip(data, quartile1, quartile3)])
whiskers_min, whiskers_max = whiskers[:, 0], whiskers[:, 1]

inds = np.arange(1, len(medians) + 1)
ax2.scatter(inds, medians, marker='o', color='white', s=30, zorder=3)
ax2.vlines(inds, quartile1, quartile3, color='k', linestyle='-', lw=5)
ax2.vlines(inds, whiskers_min, whiskers_max, color='k', linestyle='-', lw=1)

軸のスタイルを設定する

最後に、目盛りのラベルと範囲を指定することで x 軸のスタイルを設定します。これを行うために、ヘルパー関数set_axis_styleを定義します。

## set style for the axes
labels = ['A', 'B', 'C', 'D']
set_axis_style(ax2, labels)

def set_axis_style(ax, labels):
    ax.set_xticks(np.arange(1, len(labels) + 1))
    ax.set_xticklabels(labels)
    ax.set_xlim(0.25, len(labels) + 0.75)
    ax.set_xlabel('Sample Name')

まとめ

この実験では、Matplotlib を使ってバイオリンプロットの外観をカスタマイズする方法を学びました。デフォルトのバイオリンプロットを作成し、その後、バイオリンの本体の色と不透明度を変更し、その上に簡略化された箱ひげ図の表現を追加することで修正しました。また、x 軸の目盛りのラベルと範囲のスタイルも設定しました。プロットの外観をカスタマイズすることで、より情報が豊富で視覚的に魅力的なビジュアライゼーションを作成できます。