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 )
(사진의 동그라미는 타원으로 뭉쳐져 있습니다.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
'programing' 카테고리의 다른 글
Java에서 문자열의 하위 문자열 두 번째 항목 찾기 (0) | 2023.01.04 |
---|---|
Python != 연산 vs "없음" (0) | 2023.01.04 |
python 키워드 "with"는 무엇에 사용됩니까? (0) | 2023.01.04 |
왜 날짜는 1970년 1월 1일부터 계산됩니까? (0) | 2023.01.04 |
HTML 링크 비활성화 방법 (0) | 2022.12.30 |