市場ごとのデモ#

markeveryプロパティによりLine2D、データ ポイントのサブセットにマーカーを描画できます。

可能なパラメータのリストは に指定されていLine2D.set_markeveryます。要するに:

  • 単一の整数 N は、N 番目ごとのマーカーを描画します。

  • 整数のタプル (start, N) は、データ インデックスstartから始まる N 番目のマーカーごとに描画します。

  • 整数のリストは、指定されたインデックスでマーカーを描画します。

  • スライスは、スライスされたインデックスでマーカーを描画します。

  • float は、マーカー間の距離を画面空間の Axes の対角線の分数として指定します。これにより、縮尺やズームに関係なく、線に沿ったポイントの視覚的に均一な分布が得られます。

import numpy as np
import matplotlib.pyplot as plt

# define a list of markevery cases to plot
cases = [
    None,
    8,
    (30, 8),
    [16, 24, 32],
    [0, -1],
    slice(100, 200, 3),
    0.1,
    0.4,
    (0.2, 0.4)
]

# data points
delta = 0.11
x = np.linspace(0, 10 - 2 * delta, 200) + delta
y = np.sin(x) + 1.0 + delta

線形スケールでのmarkevery #

fig, axs = plt.subplots(3, 3, figsize=(10, 6), constrained_layout=True)
for ax, markevery in zip(axs.flat, cases):
    ax.set_title(f'markevery={markevery}')
    ax.plot(x, y, 'o', ls='-', ms=4, markevery=markevery)
markevery=なし, markevery=8, markevery=(30, 8), markevery=[16, 24, 32], markevery=[0, -1], markevery=スライス(100, 200, 3), markevery=0.1,マークごとに=0.4、マークごとに=(0.2、0.4)

対数目盛り付きのmarkevery #

整数を使用してデータをサブサンプリングする場合、ログ スケールによってマーカー距離が視覚的に非対称になることに注意してください。対照的に、Figure サイズの分数でのサブサンプリングは、データ座標やデータ インデックスではなく、Axes の対角線の分数に基づいているため、均等な分布を作成します。

fig, axs = plt.subplots(3, 3, figsize=(10, 6), constrained_layout=True)
for ax, markevery in zip(axs.flat, cases):
    ax.set_title(f'markevery={markevery}')
    ax.set_xscale('log')
    ax.set_yscale('log')
    ax.plot(x, y, 'o', ls='-', ms=4, markevery=markevery)
markevery=なし, markevery=8, markevery=(30, 8), markevery=[16, 24, 32], markevery=[0, -1], markevery=スライス(100, 200, 3), markevery=0.1,マークごとに=0.4、マークごとに=(0.2、0.4)

ズームされたプロットのmarkevery #

整数ベースのmarkevery仕様は、基になるデータからポイントを選択し、ビューに依存しません。対照的に、float ベースの仕様は、Axes の対角線に関連しています。ズームしても軸の対角線は変更されませんが、表示されるデータ範囲が変更され、ズームするとより多くのポイントが表示されます。

fig, axs = plt.subplots(3, 3, figsize=(10, 6), constrained_layout=True)
for ax, markevery in zip(axs.flat, cases):
    ax.set_title(f'markevery={markevery}')
    ax.plot(x, y, 'o', ls='-', ms=4, markevery=markevery)
    ax.set_xlim((6, 6.7))
    ax.set_ylim((1.1, 1.7))
markevery=なし, markevery=8, markevery=(30, 8), markevery=[16, 24, 32], markevery=[0, -1], markevery=スライス(100, 200, 3), markevery=0.1,マークごとに=0.4、マークごとに=(0.2、0.4)

極座標プロットのmarkevery #

r = np.linspace(0, 3.0, 200)
theta = 2 * np.pi * r

fig, axs = plt.subplots(3, 3, figsize=(10, 6), constrained_layout=True,
                        subplot_kw={'projection': 'polar'})
for ax, markevery in zip(axs.flat, cases):
    ax.set_title(f'markevery={markevery}')
    ax.plot(theta, r, 'o', ls='-', ms=4, markevery=markevery)

plt.show()
markevery=なし, markevery=8, markevery=(30, 8), markevery=[16, 24, 32], markevery=[0, -1], markevery=スライス(100, 200, 3), markevery=0.1,マークごとに=0.4、マークごとに=(0.2、0.4)

スクリプトの合計実行時間: ( 0 分 10.927 秒)

Sphinx-Gallery によって生成されたギャラリー