Matplotlib에 대한 완전한 안내서 : 기본에서 고급 플롯까지


편집자에 의한 이미지 | chatgpt
데이터를 시각화하면 둔한 연필로 걸작을 스케치하려고하는 느낌이들 수 있습니다. 당신은 당신이 만들고 싶은 것을 알고 있지만, 당신의 손에있는 도구는 협력하지 않습니다. 코드가 뒤죽박죽을 쳐다 본 적이 있다면 Matplotlib 그래프를 지저분한 출력처럼 보이게하려면 혼자가 아닙니다.
Matplotlib을 처음 사용한 것을 기억합니다. 프로젝트의 온도 데이터를 플로팅해야했고 몇 시간 동안 인터넷 검색 “X 축 레이블을 회전하는 방법”이후 토네이도에서 살아남은 것처럼 보이는 차트가되었습니다. 친숙한 소리? 그렇기 때문에이 안내서를 구성하는 이유는 좌절감을 건너 뛰고 실제로 이해하는 깨끗하고 전문적인 음모를 만들기 시작합니다.
왜 matplotlib? (그리고 때때로 어리석은 느낌이 든다)
Matplotlib는 파이썬 플로팅 라이브러리의 할아버지입니다. 강력하고 유연하며 … 기발한 말을하자. 초보자는 종종 다음과 같은 질문을합니다.
- “막대 차트만큼 간단한 것이 10 줄의 코드가 필요한 이유는 무엇입니까?”
- “내 음모가 1995 년처럼 보이는 것을 어떻게 막을 수 있습니까?”
- “이것을 덜 고통스럽게 만드는 방법이 있습니까?”
이것에 대한 짧은 대답? 예.
Matplotlib에는 학습 곡선이 있지만 논리를 파악하면 끝없는 사용자 정의를 잠금 해제합니다. 스틱 시프트를 운전하는 법을 배우는 것이 처음에는 어색하지만 곧 생각하지 않고 기어를 바꾸게 될 것입니다.
시작하기 : 5 분 안에 첫 번째 줄거리
우리가 고급 트릭으로 뛰어 들기 전에 기본 사항을 못 박자합시다. 설치하다 Matplotlib
~와 함께 pip install matplotlib
그런 다음 시도해보십시오.
가장 먼저해야 할 일 : 기존 방식으로 matplotlib를 가져옵니다.
import matplotlib.pyplot as plt
샘플 데이터를 만들어 봅시다.
years = [2010, 2015, 2020]
sales = [100, 250, 400]
이제 그림과 축을 만들어 봅시다 :
데이터를 플롯 할 시간 :
ax.plot(years, sales, marker="o", linestyle="--", color="green")
이제 레이블과 제목을 추가합니다.
ax.set_xlabel('Year')
ax.set_ylabel('Sales (in thousands)')
ax.set_title('Company Growth: 2010-2020')
마지막으로 플롯을 표시해야합니다.
여기서 무슨 일이 일어나고 있습니까?
plt.subplots()
그림 (캔버스)과 축 (플로팅 영역)을 만듭니다.ax.plot()
라인 차트를 그립니다. 마커, 라인 스타일 및 컬러 인수가 재즈 업- 레이블 및 타이틀이 추가됩니다
set_xlabel()
,,,set_ylabel()
그리고set_title()
팁: 항상 축에 라벨을 붙입니다! 표지되지 않은 음모는 혼란을 가져오고 비전문가처럼 보입니다.
matplotlib 플롯의 해부학
Matplotlib를 마스터하려면 언어를 사용해야합니다. 주요 구성 요소의 분석은 다음과 같습니다.
- 그림 : 전체 창 또는 페이지. 큰 그림입니다.
- 축 : 음모가 발생하는 곳. 그림에는 여러 축을 가질 수 있습니다 (서브 플로트 생각).
- 축 : 데이터 제한을 정의하는 X 및 Y 통치자.
- 아티스트 : 텍스트, 줄, 마커에 이르기까지 보는 모든 것.
혼란스러워 그림 대 축? 그림이 그림 프레임으로, 축을 내부 사진으로 상상해보십시오.
다음 단계
좋아, 이제 당신의 plost를 만들 시간입니다 … 덜 못 생겼어. Matplotlib의 기본 스타일은“2003 년의 학술지”를 외칩니다. 현대화합시다. 몇 가지 전략이 있습니다.
1. 스타일 시트를 사용하십시오
스타일 시트는 사전 구성된 팔레트로, 작업에 응집력있는 채색을 가져옵니다.
스타일 컬러 구성에 사용할 수있는 다른 옵션에는 다음이 포함됩니다. seaborn
,,, fivethirtyeight
,,, dark_background
.
2. 색상과 글꼴을 사용자 정의하십시오
기본 색상이나 글꼴에 정착하지 말고 개인화를 추가하십시오. 그렇게하는 데 많은 시간이 걸리지 않습니다.
ax.plot(years, sales, color="#2ecc71", linewidth=2.5)
ax.set_xlabel('Year', fontsize=12, fontfamily='Arial')
3. 그리드 추가 (하지만 드물게)
당신은 그리드가 압도적이되기를 원하지 않지만, 보증 될 때 그것들을 추가하면 일에 특정 감각과 유용성을 가져올 수 있습니다.
ax.grid(True, linestyle="--", alpha=0.6)
4. 주석 핵심 사항
추가 설명이 필요한 데이터 포인트가 있습니까? 적절한 경우 주석 :
ax.annotate('Record Sales in 2020!', xy=(2020, 400), xytext=(2018, 350),
arrowprops=dict(facecolor="black", shrink=0.05))
레벨 업 : 고급 기술
1. 서브 플롯 : 플롯을위한 멀티 태스킹
여러 그래프를 나란히 표시 해야하는 경우 서브 플로트를 사용하여 2 행과 1 개의 열을 만듭니다.
fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(8, 6)) axes[0].plot(years, sales, color="blue")
axes[1].scatter(years, sales, color="red")
plt.tight_layout()
마지막 줄은 겹치는 것을 방지합니다.
2. 히트 맵 및 윤곽 도표
2D에서 3D 데이터 시각화 :
import numpy as np
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))
contour = ax.contourf(X, Y, Z, cmap='viridis')
색상 스케일을 추가하려면 :
3. 대화식 플롯
그래프를 클릭 할 수있는 시간 mplcursors
:
import mplcursors
line, = ax.plot(years, sales)
mplcursors.cursor(line).connect("add", lambda sel: sel.annotation.set_text(f"Sales: ${sel.target[1]}k"))
마무리
여기서 나가기 전에 일반적인 matplotlib 두통과 수정 사항을 간단히 살펴 보겠습니다.
- “내 레이블이 잘 렸습니다!” – 사용
plt.tight_layout()
또는 그림 Subplots_Adjust로 패딩 조정 (왼쪽 = 0.1, 하단 = 0.15) - “내 음모가 비어있는 이유는 무엇입니까?!” – 잊어버렸다
plt.show()
Jupyter 사용? 추가하다%matplotlib
상단에 인라인 - “글꼴이 픽셀 화 된 것 같습니다” – 벡터 형식 (PDF, SVG)을 저장하십시오
plt.savefig('plot.pdf', dpi=300)
스스로 실험 할 준비가된다면 이제 완료 할 수 있어야 할 몇 가지 과제가 있습니다. 당신이 붙어 있다면, 코드를 의견에 공유하고 함께 문제를 해결합시다.
- 회사의 브랜드 색상과 일치하도록 히스토그램을 사용자 정의하십시오
- 최선을 다해 최근 뉴스 기사에서 차트를 재현 할 수 있습니다.
- 시간이 지남에 따라 데이터 변화를 보여주는 음모를 애니메이션하십시오 (힌트 : 시도
FuncAnimation
))
마지막으로, Matplotlib는 진화하며, 당신의 지식도 마찬가지입니다. 진행중인이 리소스를 즐겨 찾기에 추가하십시오.
결론
Matplotlib는 단순한 라이브러리가 아니라 스토리 텔링을위한 툴킷입니다. 기후 데이터를 시각화하든 판매 동향을 계획하든 목표는 명확합니다. 전문가조차도 Google조차도“두 번째 y 축을 추가하는 방법”을 기억하십시오. 열쇠는 단순한 시작하고 자주 반복하며 문서를 두려워하지 않는 것입니다.
Shittu Chemive 소프트웨어 엔지니어이자 기술 작가로, 최첨단 기술을 활용하여 매력적인 이야기를 만들어 내고 복잡한 개념을 단순화하기위한 예리한 눈으로 강력한 이야기를 만들어내는 데 열정적입니다. Shittu를 찾을 수도 있습니다 지저귀다.
Post Comment