programing

Python에서 빈 원으로 산점도를 만드는 방법은 무엇입니까?

minecode 2023. 1. 4. 20:11
반응형

Python에서 빈 원으로 산점도를 만드는 방법은 무엇입니까?

Python에서 Matplotlib을 사용하면 빈 원이 있는 산점도를 어떻게 표시할 수 있습니까?목표는 이미 표시된 색상의 디스크 주위에 빈 원을 그리는 것입니다.scatter()색칠된 동그라미를 다시 그릴 필요 없이 강조 표시하도록 합니다.

나는 노력했다.facecolors=None, 아무 소용이 없습니다.

산포에 관한 문서에서 다음 사항을 참조해 주세요.

Optional kwargs control the Collection properties; in particular:

    edgecolors:
        The string ‘none’ to plot faces with no outlines
    facecolors:
        The string ‘none’ to plot unfilled outlines

다음을 시도해 보십시오.

import matplotlib.pyplot as plt 
import numpy as np 

x = np.random.randn(60) 
y = np.random.randn(60)

plt.scatter(x, y, s=80, facecolors='none', edgecolors='r')
plt.show()

예시 이미지

참고: 다른 유형의 플롯에 대해서는 이 게시물을 참조하십시오.markeredgecolor그리고.markerfacecolor.

이게 먹힐까?

plt.scatter(np.random.randn(100), np.random.randn(100), facecolors='none')

예시 이미지

또는 plot()을 사용합니다.

plt.plot(np.random.randn(100), np.random.randn(100), 'o', mfc='none')

예시 이미지

또 다른 방법이 있습니다.현재 축, 플롯, 이미지 등에 원이 추가됩니다.

from matplotlib.patches import Circle  # $matplotlib/patches.py

def circle( xy, radius, color="lightsteelblue", facecolor="none", alpha=1, ax=None ):
    """ add a circle to ax= or current axes
    """
        # from .../pylab_examples/ellipse_demo.py
    e = Circle( xy=xy, radius=radius )
    if ax is None:
        ax = pl.gca()  # ax = subplot( 1,1,1 )
    ax.add_artist(e)
    e.set_clip_box(ax.bbox)
    e.set_edgecolor( color )
    e.set_facecolor( facecolor )  # "none" not None
    e.set_alpha( alpha )

alt 텍스트

(사진의 동그라미는 타원으로 뭉쳐져 있습니다.imshow aspect="auto").

matplotlib 2.0에는 다음과 같은 파라미터가 있습니다.fillstyle따라서 마커가 채워지는 방법을 더 잘 제어할 수 있습니다.제 경우는 에러바에서 사용하고 있습니다만, 일반적으로 http://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.errorbar.html의 마커에서 사용할 수 있습니다.

fillstyle는 다음 값을 사용할 수 있습니다.[ full ] | [ left ] | [ right ] | [ bottom ] | [ top ] | [ none ]

사용할 때 유의해야 할 두 가지 중요한 사항이 있습니다.fillstyle,

1) mfc가 임의의 값으로 설정되어 있는 경우 우선되므로 fill style을 none으로 설정했을 경우 활성화되지 않습니다.따라서 필 스타일과 함께 mfc를 사용하지 마십시오.

2) 마커 가장자리 폭을 제어할 수 있습니다(사용:markeredgewidth또는mew마커가 비교적 작고 가장자리 폭이 두꺼운 경우 마커가 채워져 있지 않아도 채워진 것처럼 보이기 때문입니다.

다음으로 에러바를 사용한 예를 나타냅니다.

myplot.errorbar(x=myXval, y=myYval, yerr=myYerrVal, fmt='o', fillstyle='none', ecolor='blue',  mec='blue')

Gary Ker의 예를 참고하여 여기에 제시된 바와 같이 다음 코드를 사용하여 지정된 값과 관련된 빈 원을 만들 수 있습니다.

import matplotlib.pyplot as plt 
import numpy as np 
from matplotlib.markers import MarkerStyle

x = np.random.randn(60) 
y = np.random.randn(60)
z = np.random.randn(60)

g=plt.scatter(x, y, s=80, c=z)
g.set_facecolor('none')
plt.colorbar()
plt.show()

따라서 특정 기준에 맞는 몇 가지 사항을 강조하고 싶을 것입니다.Prefread 명령을 사용하여 빈 원으로 하이라이트된 점의 두 번째 산점도를 수행하고 첫 번째 호출을 수행하여 모든 점을 표시할 수 있습니다.큰 빈 원이 채워진 작은 원을 감싸기에 충분할 정도로 s 매개 변수가 작아야 합니다.

다른 옵션은 산포를 사용하지 않고 원/타원 명령을 사용하여 패치를 개별적으로 그리는 것입니다.이것들은 matplotlib로 되어 있다.패치, 여기 직사각형 원을 그리는 방법에 대한 샘플 코드 등이 있습니다.

언급URL : https://stackoverflow.com/questions/4143502/how-to-do-a-scatter-plot-with-empty-circles-in-python

반응형