matplotlib 범례 추가
에서 선 그래프의 범례를 작성하려면 어떻게 해야 합니까?Matplotlib
의PyPlot
추가 변수를 만들지 않고요?
다음 그래프 스크립트를 고려하십시오.
if __name__ == '__main__':
PyPlot.plot(total_lengths, sort_times_bubble, 'b-',
total_lengths, sort_times_ins, 'r-',
total_lengths, sort_times_merge_r, 'g+',
total_lengths, sort_times_merge_i, 'p-', )
PyPlot.title("Combined Statistics")
PyPlot.xlabel("Length of list (number)")
PyPlot.ylabel("Time taken (seconds)")
PyPlot.show()
보다시피 이것은 매우 기본적인 사용법입니다.matplotlib
의PyPlot
그러면 다음과 같은 그래프가 이상적으로 생성됩니다.
특별한 건 없어요, 알아요.다만, 어떤 데이터가 어디에 플롯 되고 있는지는 불명확합니다(몇 가지 정렬 알고리즘의 데이터를 시간 대비 길이로 플롯 하려고 합니다만, 어느 선이 어느 선인지 확실히 하고 싶습니다).따라서 아래의 예시를 참고하여 (공식 사이트에서) 레전드가 필요합니다.
ax = subplot(1,1,1)
p1, = ax.plot([1,2,3], label="line 1")
p2, = ax.plot([3,2,1], label="line 2")
p3, = ax.plot([2,3,1], label="line 3")
handles, labels = ax.get_legend_handles_labels()
# reverse the order
ax.legend(handles[::-1], labels[::-1])
# or sort them by labels
import operator
hl = sorted(zip(handles, labels),
key=operator.itemgetter(1))
handles2, labels2 = zip(*hl)
ax.legend(handles2, labels2)
추가 변수를 생성해야 합니다.ax
이 변수를 추가하지 않고 현재 스크립트의 단순성을 유지하지 않고 그래프에 범례를 추가하려면 어떻게 해야 합니까?
를 추가합니다.label=
를 호출합니다.
다음 샘플(Python 3.8.0으로 테스트)을 검토해 주십시오.
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 20, 1000)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, "-b", label="sine")
plt.plot(x, y2, "-r", label="cosine")
plt.legend(loc="upper left")
plt.ylim(-1.5, 2.0)
plt.show()
이 튜토리얼에서 약간 수정:http://jakevdp.github.io/mpl_tutorial/tutorial_pages/tut1.html
Axes 인스턴스에 액세스할 수 있습니다(ax
)와 함께plt.gca()
이 경우 를 사용할 수 있습니다.
plt.gca().legend()
이 작업은 다음 중 하나를 사용하여 수행할 수 있습니다.label=
각 키워드의plt.plot()
콜 또는 라벨을 태플 또는 목록으로 할당하여legend
다음 작업 예시와 같습니다.
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-0.75,1,100)
y0 = np.exp(2 + 3*x - 7*x**3)
y1 = 7-4*np.sin(4*x)
plt.plot(x,y0,x,y1)
plt.gca().legend(('y0','y1'))
plt.show()
그러나 Axes 인스턴스에 한 번 더 액세스해야 하는 경우 변수에 저장하는 것이 좋습니다.ax
와 함께
ax = plt.gca()
그리고 나서 전화한다.ax
대신plt.gca()
.
여기 도움이 되는 예가 있습니다.
fig = plt.figure(figsize=(10,5))
ax = fig.add_subplot(111)
ax.set_title('ADR vs Rating (CS:GO)')
ax.scatter(x=data[:,0],y=data[:,1],label='Data')
plt.plot(data[:,0], m*data[:,0] + b,color='red',label='Our Fitting
Line')
ax.set_xlabel('ADR')
ax.set_ylabel('Rating')
ax.legend(loc='best')
plt.show()
사용자 정의 범례 문서를 추가할 수 있습니다.
first = [1, 2, 4, 5, 4]
second = [3, 4, 2, 2, 3]
plt.plot(first, 'g--', second, 'r--')
plt.legend(['First List', 'Second List'], loc='upper left')
plt.show()
범례가 있는 사인 및 코사인 곡선에 대한 단순 그림입니다.
사용했다matplotlib.pyplot
import math
import matplotlib.pyplot as plt
x=[]
for i in range(-314,314):
x.append(i/100)
ysin=[math.sin(i) for i in x]
ycos=[math.cos(i) for i in x]
plt.plot(x,ysin,label='sin(x)') #specify label for the corresponding curve
plt.plot(x,ycos,label='cos(x)')
plt.xticks([-3.14,-1.57,0,1.57,3.14],['-$\pi$','-$\pi$/2',0,'$\pi$/2','$\pi$'])
plt.legend()
plt.show()
플롯 콜의 각 인수에 그래프로 나타내고 있는 시리즈에 대응하는 라벨을 추가합니다.label = "series 1"
그럼 간단하게 추가해 주세요.Pyplot.legend()
그러면 범례에 이러한 라벨이 표시됩니다.
언급URL : https://stackoverflow.com/questions/19125722/adding-a-matplotlib-legend
'programing' 카테고리의 다른 글
GCC에서 "문자열 상수에서 "char*"로 사용되지 않는 변환" 경고를 제거하는 방법 (0) | 2023.04.22 |
---|---|
url 내의 double excape sequence : 요구 필터링 모듈은 이중 이스케이프 시퀀스를 포함하는 요구를 거부하도록 설정됩니다. (0) | 2023.04.22 |
숫자에서 0을 제거하는 중 (0) | 2023.04.22 |
ORDER BY 절이 뷰, 인라인 함수, 파생된 테이블, 하위 쿼리 및 일반 테이블 식에 유효하지 않습니다. (0) | 2023.04.17 |
T-SQL에서 날짜/시간을 문자열로 변환하는 방법 (0) | 2023.04.17 |