Markevery 데모 #

markevery속성을 Line2D사용하면 데이터 포인트의 하위 집합에서 마커를 그릴 수 있습니다.

가능한 매개변수 목록은 에 지정되어 Line2D.set_markevery있습니다. 요컨대:

  • 단일 정수 N은 모든 N번째 마커를 그립니다.

  • 정수 튜플(start, N)은 데이터 인덱스 start 에서 시작하여 모든 N번째 마커를 그립니다 .

  • 정수 목록은 지정된 인덱스에 마커를 그립니다.

  • 슬라이스는 슬라이스된 인덱스에 마커를 그립니다.

  • 부동 소수점은 마커 사이의 거리를 화면 공간에서 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=slice(100, 200, 3), markevery=0.1, markevery=0.4, markevery=(0.2, 0.4)

로그 스케일이 있는 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.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=slice(100, 200, 3), markevery=0.1, markevery=0.4, markevery=(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=slice(100, 200, 3), markevery=0.1, markevery=0.4, markevery=(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=slice(100, 200, 3), markevery=0.1, markevery=0.4, markevery=(0.2, 0.4)

스크립트의 총 실행 시간: ( 0분 10.927초)

Sphinx-Gallery에서 생성한 갤러리