파이썬에서 Matplotlib을 사용하면 빈 원이있는 산점도를 어떻게 그릴 수 있습니까? 목표는에 의해 이미 그려진 일부 색의 디스크 주위에 빈 원을 그려서 scatter()
, 이상적으로는 색의 원을 다시 그리지 않고 강조 표시하는 것입니다.
나는 시도 facecolors=None
아무 소용.
파이썬에서 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()
참고 : 다른 유형의 도표에 대해서는 and 사용에 대한 이 게시물 을 참조하십시오 .markeredgecolor
markerfacecolor
facecolors=None
작동하지 않아서 나에게 넘어졌습니다.
markerfacecolor='none'
지금의 방식입니다.
markerfacecolor='none'
추가해보십시오markeredgewidth=1.0
%matplotlib inline
및 의 표준 가져 오기를 수행 import matplotlib.pyplot as plt
한 다음 Seaborn을 플로팅 기본값으로 설정 한 후 Seaborn에서도 사용할 수 있습니다.import seaborn as sns; sns.set()
이것들이 효과가 있습니까?
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')
plot
대신 사용할 때 유용합니다scatter
또 다른 방법은 다음과 같습니다. 현재 축, 플롯 또는 이미지 등에 원을 추가합니다.
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'| '왼쪽'| '오른쪽'| '하단'| '상단'| '없음']
를 사용할 때 명심해야 할 두 가지 사항이 있습니다 fillstyle
.
1) mfc가 어떤 종류의 값으로 설정되어 있으면 우선 순위가 적용되므로 fillstyle을 'none'으로 설정하면 적용되지 않습니다. 따라서 fillstyle과 함께 mfc를 사용하지 마십시오
2) 사용하여 마커 가장자리 폭 (제어 할 수 있습니다 markeredgewidth
또는 mew
마커가 상대적으로 작고 가장자리 폭이 두꺼운 경우 그렇지 않은 경우에도 마커가 가득한 모습 때문에).
다음은 오류 표시 줄을 사용하는 예입니다.
myplot.errorbar(x=myXval, y=myYval, yerr=myYerrVal, fmt='o', fillstyle='none', ecolor='blue', mec='blue')
Gary Kerr의 예를 바탕으로 여기 에서 제안한대로 다음 코드를 사용하여 지정된 값과 관련된 빈 원을 만들 수 있습니다.
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()
.scatter()
하지 않을 때 나를 위해 일했습니다 . 문맥 상, 나는 또한 컬러 맵 ( c=z, cmap='jet'
)을 적용하고있었습니다 .
따라서 특정 기준에 맞는 몇 가지 사항을 강조하고 싶다고 가정합니다. Prelude의 명령을 사용하여 빈 원으로 강조 표시된 점의 두 번째 산점도를 수행하고 첫 번째 호출로 모든 점을 표시 할 수 있습니다. 비어있는 큰 원이 더 작은 채워진 원을 둘러싸려면 s 매개 변수가 충분히 작아야합니다.
다른 옵션은 비산을 사용하지 않고 circle / ellipse 명령을 사용하여 패치를 개별적으로 그리는 것입니다. 이들은 matplotlib.patches에 있으며, 여기 에는 원 사각형 등을 그리는 방법에 대한 샘플 코드가 있습니다.