선의 개별 점에 대한 마커 설정
그림에 선을 그리는 데 Matplotlib을 사용했습니다.이제 선의 개별 점에 대한 스타일, 특히 마커를 설정하려고 합니다.이거 어떻게 하는 거지?
제 질문을 명확히 하기 위해, 저는 라인의 모든 마커가 아닌 라인의 개별 마커에 대한 스타일을 설정할 수 있기를 원합니다.
키워드 인수 지정linestyle
및/또는marker
할 때에plot
.
예를 들어, 점선과 파란색 원 마커를 사용합니다.
plt.plot(range(10), linestyle='--', marker='o', color='b', label='line with marker')
plt.legend()
동일한 내용에 대한 바로 가기 호출:
plt.plot(range(10), '--bo', label='line with marker')
plt.legend()
다음은 가능한 선 및 마커 스타일 목록입니다.
================ ===============================
character description
================ ===============================
- solid line style
-- dashed line style
-. dash-dot line style
: dotted line style
. point marker
, pixel marker
o circle marker
v triangle_down marker
^ triangle_up marker
< triangle_left marker
> triangle_right marker
1 tri_down marker
2 tri_up marker
3 tri_left marker
4 tri_right marker
s square marker
p pentagon marker
* star marker
h hexagon1 marker
H hexagon2 marker
+ plus marker
x x marker
D diamond marker
d thin_diamond marker
| vline marker
_ hline marker
================ ===============================
edit: 주석에서 요청한 대로 임의의 점 부분 집합을 표시하는 예를 사용합니다.
import numpy as np
import matplotlib.pyplot as plt
xs = np.linspace(-np.pi, np.pi, 30)
ys = np.sin(xs)
markers_on = [12, 17, 18, 19]
plt.plot(xs, ys, '-gD', markevery=markers_on, label='line with select markers')
plt.legend()
plt.show()
다음을 사용하는 마지막 예제markevery
1.4+ 이후에는 이 기능 분기의 병합으로 인해 kwarg가 가능합니다.이전 버전의 matplotlib에 고착된 경우에도 선 그림에 산점도를 겹쳐 놓아 결과를 얻을 수 있습니다.자세한 내용은 편집 기록을 참조하십시오.
모든 마커의 이름과 설명이 나와 있는 사진이 있으니 도움이 되길 바랍니다.
import matplotlib.pylab as plt
markers = ['.',',','o','v','^','<','>','1','2','3','4','8','s','p','P','*','h','H','+','x','X','D','d','|','_']
descriptions = ['point', 'pixel', 'circle', 'triangle_down', 'triangle_up','triangle_left',
'triangle_right', 'tri_down', 'tri_up', 'tri_left', 'tri_right', 'octagon',
'square', 'pentagon', 'plus (filled)','star', 'hexagon1', 'hexagon2', 'plus',
'x', 'x (filled)','diamond', 'thin_diamond', 'vline', 'hline']
x=[]
y=[]
for i in range(5):
for j in range(5):
x.append(i)
y.append(j)
plt.figure(figsize=(8, 8))
for i,j,m,l in zip(x,y,markers,descriptions):
plt.scatter(i,j,marker=m)
plt.text(i-0.15,j+0.15,s=m+' : '+l)
plt.axis([-0.1,4.8,-0.1,4.5])
plt.axis('off')
plt.tight_layout()
plt.show()
나중에 참조할 수 있도록 - 더.Line2D
에 의해 반환된 예술가plot()
또한 가 있습니다.set_markevery()
특정 지점에만 마커를 설정할 수 있는 방법 - https://matplotlib.org/api/_as_gen/matplotlib.lines.Line2D.html#matplotlib.lines.Line2D.set_markevery 참조
특정 점 표시기 모양, 크기를 변경하는 간단한 방법...먼저 다른 모든 데이터를 사용하여 그림을 그린 다음 해당 점(또는 여러 점의 스타일을 변경하려는 경우 점 집합)만 하나 더 그림을 그리는 것입니다.두 번째 점의 마커 모양을 변경하려고 합니다.
x = [1,2,3,4,5]
y = [2,1,3,6,7]
plt.plot(x, y, "-o")
x0 = [2]
y0 = [1]
plt.plot(x0, y0, "s")
plt.show()
결과: 여러 마커로 플롯
안녕하세요. 예를 들어보겠습니다.
import numpy as np
import matplotlib.pyplot as plt
def grafica_seno_coseno():
x = np.arange(-4,2*np.pi, 0.3)
y = 2*np.sin(x)
y2 = 3*np.cos(x)
plt.plot(x, y, '-gD')
plt.plot(x, y2, '-rD')
for xitem,yitem in np.nditer([x,y]):
etiqueta = "{:.1f}".format(xitem)
plt.annotate(etiqueta, (xitem,yitem), textcoords="offset points",xytext=(0,10),ha="center")
for xitem,y2item in np.nditer([x,y2]):
etiqueta2 = "{:.1f}".format(xitem)
plt.annotate(etiqueta2, (xitem,y2item), textcoords="offset points",xytext=(0,10),ha="center")
plt.grid(True)
plt.show()
grafica_seno_coseno()
언급URL : https://stackoverflow.com/questions/8409095/set-markers-for-individual-points-on-a-line
'programing' 카테고리의 다른 글
npm이 make not found 오류와 함께 시간을 설치하지 못했습니다. (0) | 2023.06.04 |
---|---|
Android Studio에 장치가 표시되지 않습니다. (0) | 2023.06.04 |
Visual Studio에서 NuGet 패키지 복원을 사용하려면 어떻게 해야 합니까? (0) | 2023.06.04 |
공용 키를 찾는 방법특정 dll에 대한 토큰? (0) | 2023.05.25 |
인터넷 연결이 오프라인 상태인지 탐지하시겠습니까? (0) | 2023.05.25 |