Jupyter Notebook에서 matplotlib를 사용하여 플롯을 만들고 수정하는 방법을 배우고 있습니다. 노트북 시작 부분에 다음과 같은 매직 함수와 import 문을 추가했습니다.
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
그런 다음 셀을 만들고 다음 코드를 모두 추가했습니다.
x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
y = x
plt.figure()
plt.scatter(x[:2], y[:2], s=100, c='red', label='Red data')
plt.scatter(x[2:], y[2:], s = 100, c='blue', label='Blue data')
plt.xlabel('This is my x label')
plt.ylabel('This is my y label')
plt.title('This is my plot title')
이 경우 플롯 자체는 괜찮아 보이지만 추가 Text(0.5, 1.0, 'This is my plot title')
줄이 추가되는 이유를 이해하지 못하고 xlabel 및 ylabel 텍스트 개체에 대해서는 아무것도 이해하지 못합니다 .
이제는 플롯과 관련된 모든 명령을 항상 하나의 셀로 강제해야하는 것이 다소 비현실적이라는 것을 알게되었습니다. 한 셀에 기본 플롯을 만들고 다른 셀에 레이블과 범례를 추가 할 수 있기를 원합니다 (나중에 플롯에서 다른 조작을 수행하지만이 질문에 대한 주제는 아닙니다). 이를 위해서는 첫 번째 셀에서 생성 된 플롯을 참조해야합니다 plt.gcf()
.이를 위해 . 그러나 다음 코드를 실행하면 Python / matplotlib / Jupyter는 다른 셀을 완전히 다른 플롯으로 취급합니다. (참고 : 점선 구분은 서로 다른 Jupyter Notebook 셀을 나타냅니다.)
plt.figure()
plt.scatter(x[:2], y[:2], s=100, c='red', label='Red data')
plt.scatter(x[2:], y[2:], s = 100, c='blue', label='Blue data')
#-------------------------------------------------------------
plt.gcf()
plt.xlabel('This is my x label')
plt.ylabel('This is my y label')
plt.title('This is my plot title')
#-------------------------------------------------------------
plt.gcf()
plt.legend(loc=4, frameon=False, title='Legend')
나는 %matplotlib inline
겉보기에 더 현대적인 것으로 바꾸려고 시도했지만 %matplotlib notebook
도움이되지 않았습니다. 나는 또한 plt.gcf()
셀의 시작 부분 에서 행을 제거하려고 시도 했지만 여전히 동일한 출력을 얻었습니다.
내 버전 편집 :
Figure를 fig
다음 과 같은 변수에 저장 한 다음fig.gca()
추가 플롯 명령을 위해 현재 축을 가져 오는 데 사용 하는 것이 트릭을 수행합니다.
패키지를 가져오고 matplotlib 인라인 환경을 사용하여 시작합니다.
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
그런 다음 데이터를 가져와 이에 대한 산점도를 만듭니다 (그림을 그림에 저장하는 동안).
# Generate some random data
x = np.arange(1,3)
y = x
x2 = np.arange(3,11)
y2 = x2
x3 = np.arange(11,21)
y3 = x3
# Create initial figure
fig = plt.figure()
plt.scatter(x, y, linewidth=5)
그런 다음 fig.gca()
트릭을 사용하여 더 많은 데이터를 플로팅 합니다 ( fig
선은 셀 아래에 플롯을 표시 함).
fig.gca().scatter(x2, y2, color='r', linewidth=5)
fig
fig.gca().scatter(x3, y3, color='g', linewidth=5)
fig
fig.legend(['Blue Data','Red Data','Green Data'], loc='lower right')
fig
fig.gca().set_xlabel('My x label')
fig.gca().set_ylabel('My y label')
fig.gca().set_title('A title')
fig
내 코드에서 볼 수 있듯이 플롯에 대한 각 추가 (데이터, 축 제목 등)는 별도의 셀에서 수행되었습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다