복붙노트

[PYTHON] Matplotlib - 선을 투명하게 만들지 않고 마커의 얼굴색을 투명하게 만드는 방법

PYTHON

Matplotlib - 선을 투명하게 만들지 않고 마커의 얼굴색을 투명하게 만드는 방법

나는 matplotlib에서 라인의 투명도를 설정하는 법을 안다. 예를 들어, 다음 코드는 선과 표식을 투명하게 만듭니다.

import numpy as np
import matplotlib.pyplot as plt

vec = np.random.uniform(0, 10, 50)
f = plt.figure(1)
ax = f.add_subplot(111)
ax.plot(vec, color='#999999', marker='s', alpha=0.5)

라인의 알파 = 1.0, 마커의 얼굴색을 반투명 (알파 = 0.5)으로하고 싶습니다. 이것이 matplotlib에서 할 수 있습니까?

고맙습니다.

해결법

  1. ==============================

    1.두 개의 독립적 인 Line2D 객체를 끈적 거리는 테이킹으로 해킹 할 수 있습니다.

    두 개의 독립적 인 Line2D 객체를 끈적 거리는 테이킹으로 해킹 할 수 있습니다.

    th = np.linspace(0, 2 * np.pi, 64)
    y = np.sin(th)
    ax = plt.gca()
    
    lin, = ax.plot(th, y, lw=5)
    mark, = ax.plot(th, y, marker='o', alpha=.5, ms=10)
    
    ax.legend([(lin, mark)], ['merged'])
    plt.draw()
    

    설명을 보려면 여기를 참조하십시오.

  2. ==============================

    2.matplotlib.line의 소스 코드를 읽은 후에는 코드 경로 (적어도 Agg에서는 가능하지만 모든 백엔드에서는 가능)가 있으므로이 작업을 수행 할 수 있습니다. 이것이 의도적 인 행동인지 여부는 확실하지 않지만 현재로서는 분명히 작동합니다. 핵심은 선의 알파 값을 정의하는 것이 아니라 알파 값과 함께 원하는 색상을 정의하는 것입니다.

    matplotlib.line의 소스 코드를 읽은 후에는 코드 경로 (적어도 Agg에서는 가능하지만 모든 백엔드에서는 가능)가 있으므로이 작업을 수행 할 수 있습니다. 이것이 의도적 인 행동인지 여부는 확실하지 않지만 현재로서는 분명히 작동합니다. 핵심은 선의 알파 값을 정의하는 것이 아니라 알파 값과 함께 원하는 색상을 정의하는 것입니다.

    import matplotlib.pyplot as plt
    
    plt.plot([0, 1], [1, 0], 'k')
    # Do not set an alpha value here
    l, = plt.plot(range(10), 'o-', lw=10, markersize=30)
    
    l.set_markerfacecolor((1, 1, 0, 0.5))
    l.set_color('blue')
    
    plt.show()
    

    이것들은 아마도 plt.plot에서 인수로 주어질 수 있습니다.

    plt.plot(range(10), 'bo-', markerfacecolor=(1, 1, 0, 0.5), )
    

    속임수를 쓸 것이다.

    HTH

  3. from https://stackoverflow.com/questions/15928539/matplotlib-how-to-make-the-marker-face-color-transparent-without-making-the-li by cc-by-sa and MIT license