Matplotlib
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
Matplotlib는 MATLAB과 유사한 인터페이스를 제공하는 파이썬 기반의 2차원 및 3차원 플롯을 지원하는 라이브러리이다. MATLAB만큼 사용하기 쉽도록 설계되었으며, 다양한 플롯 유형을 제공한다. Matplotlib는 파이썬의 장점을 활용하여 자유-오픈 소스, SVG 지원, 대규모 소프트웨어 개발 가능성을 제공한다. Matplotlib 기능을 확장하는 다양한 툴킷이 있으며, 애니메이션 기능도 지원한다.
Pyplot은 MATLAB과 유사한 인터페이스를 제공하는 Matplotlib 모듈이다.[9] Matplotlib은 Python을 사용할 수 있고, 무료이며 오픈 소스라는 장점을 활용하여 MATLAB만큼 사용하기 쉽도록 설계되었다. matplotlib의 pylab 인터페이스는 MATLAB 사용 경험이 있는 사용자가 matplotlib를 쉽게 습득할 수 있도록 설계되었다.
Matplotlib는 다양한 종류의 2차원 및 3차원 플롯을 지원한다. 2차원 플롯에 대한 지원은 강력하며, 3차원 플롯은 2차원 플롯만큼 강력하지는 않지만 훌륭하게 지원하고 있다.
2. MATLAB과의 비교
Python, Numpy, matplotlib, SciPy 등을 조합하는 것은 MATLAB보다 다음과 같은 장점이 있다.3. 플롯 유형
3. 1. 2차원 플롯
Matplotlib는 다양한 종류의 2차원 및 3차원 플롯을 지원한다. 2차원 플롯에 대한 지원은 강력하다.
'''꺾은선 그래프'''
>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> a = np.linspace(0, 10, 100)
>>> b = np.exp(-a)
>>> plt.plot(a, b)
>>> plt.show()
'''히스토그램'''
>>> import matplotlib.pyplot as plt
>>> from numpy.random import normal, rand
>>> x = normal(size=200)
>>> plt.hist(x, bins=30)
>>> plt.show()
'''산점도'''
>>> import matplotlib.pyplot as plt
>>> from numpy.random import rand
>>> a = rand(100)
>>> b = rand(100)
>>> plt.scatter(a, b)
>>> plt.show()
3. 2. 3차원 플롯
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X2 + Y2)
Z = np.sin(R)
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm)
plt.show()
Matplotlib는 3차원 플롯을 지원한다. 다만 3차원 플롯에 대한 지원은 2차원 플롯만큼 강력하지는 않다.
3. 3. 예시
python
# 꺾은선 그래프 예시
import matplotlib.pyplot as plt
import numpy as np
a = np.linspace(0, 10, 100)
b = np.exp(-a)
plt.plot(a, b)
plt.show()
```
```python
# 히스토그램 예시
import matplotlib.pyplot as plt
from numpy.random import normal,rand
x = normal(size=200)
plt.hist(x, bins=30)
plt.show()
```
```python
# 산점도 예시
import matplotlib.pyplot as plt
from numpy.random import rand
a = rand(100)
b = rand(100)
plt.scatter(a, b)
plt.show()
```
```python
# 3D 그래프 예시
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X2 + Y2)
Z = np.sin(R)
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm)
plt.show()
```
Matplotlib는 다양한 종류의 2차원 및 3차원 플롯을 지원한다.
4. 애니메이션
Matplotlib의 애니메이션[10] 기능은 특정 데이터가 시간에 따라 어떻게 변화하는지 시각화하는 데 사용된다. 그러나 이 기능은 필요에 따라 다양하게 활용할 수 있다.
애니메이션은 프레임 번호(또는 시간)에 따라 정의된다. 즉, 프레임 번호를 입력으로 받아 Matplotlib Figure를 정의하거나 업데이트하는 함수를 정의해야 한다.
애니메이션 시작 이후 프레임 번호 시작 시점의 시간은 다음과 같이 계산할 수 있다.
- 시간 = (프레임 번호 - 1) / FPS
5. 툴킷
Matplotlib 기능을 확장하는 여러 툴킷이 있다. 일부는 별도로 다운로드해야 하며, 다른 일부는 Matplotlib 소스 코드와 함께 제공되지만 외부 종속성이 있다.[11]
- Basemap: 다양한 지도 투영법, 해안선, 정치적 경계를 이용한 지도 그리기를 지원한다.[12] 현재는 카토피(cartopy)의 사용이 권장된다.
- Cartopy: 객체 지향적 지도 투영 정의, 임의의 점, 선, 다각형, 이미지 변환 기능을 갖춘 매핑 라이브러리이다.[13] (Matplotlib v1.2 이상)
- Excel 도구: 마이크로소프트 엑셀과 데이터 교환을 위한 유틸리티이다.
- GTK 도구: GTK 라이브러리 인터페이스이다.
- Qt 인터페이스
- Mplot3d: 3-D 플롯을 지원한다.
- Natgrid: 불규칙하게 배치된 데이터를 그리드화하기 위한 natgrid 라이브러리 인터페이스이다.
- tikzplotlib: LaTeX 문서로의 원활한 통합을 위해 Pgfplots로 내보내는 기능을 제공한다. (이전에는 ''matplotlib2tikz''로 알려짐)[14]
- Seaborn: Matplotlib 위에 API를 제공하여 플롯 스타일 및 색상 기본값에 대한 적절한 선택을 제공하고, 일반적인 통계 플롯 유형에 대한 간단한 고급 함수를 정의하며, Pandas에서 제공하는 기능과 통합된다.
- GeoPandas:[15] PostGIS와 같은 공간 데이터베이스 없이 Python에서 지리 공간 작업을 단순화한다.[16]
- Cartopy: 사용자가 투영법을 지정하고 한 줄의 코드로 해안선을 추가할 수 있도록 하여 matplotlib에서 지도 생성을 간소화한다.[17]
6. 관련 프로젝트
Matplotlib의 기능을 확장하기 위한 몇 가지 툴킷이 존재한다. Matplotlib 소스 코드에 포함된 것도 있고, 별도로 다운로드해야 하는 것도 있다.
- 빅글스(Biggles)
- 차코(Chaco)
- DISLIN
- GNU 옥타브
- [https://github.com/dkogan/gnuplotlib/ gnuplotlib] – gnuplot 백엔드를 사용한 numpy용 플로팅
- Gnuplot-py
- PLplot – Python 바인딩 사용 가능
- SageMath – 플롯을 그리기 위해 `Matplotlib` 사용
- SciPy (모듈 `plt` 및 `gplt`)
- Plotly – 대화형 온라인 Matplotlib 및 Python 그래프
- Bokeh – 프레젠테이션을 위해 최신 웹 브라우저를 타겟으로 하는 Python 대화형 시각화 라이브러리
- Basemap: 다양한 투영법, 해안선, 정치적 국경에 따른 지도의 그리기
- 현재는 카토피(cartopy)의 사용이 권장된다.
- Mplot3d: 3차원 플롯
- Natgrid: natgrid 라이브러리용 인터페이스
- Excel tools: 마이크로소프트 엑셀(Microsoft Excel)과의 데이터 교환을 수행하는 유틸리티
- GTK tools: GTK 라이브러리용 인터페이스
참조
[1]
웹사이트
Copyright Policy
https://matplotlib.o[...]
[2]
웹사이트
History — Matplotlib 3.9.2 documentation
https://matplotlib.o[...]
[3]
웹사이트
API Overview
https://matplotlib.o[...]
matplotlib.org
[4]
웹사이트
Matplotlib github stats
https://matplotlib.o[...]
matplotlib.org
[5]
웹사이트
Announcing Michael Droettboom as the lead Matplotlib developer
https://web.archive.[...]
matplotlib.org
2013-04-24
[6]
뉴스
Matplotlib Lead Developer Explains Why He Can't Fix the Docs—But You Can – NumFOCUS
https://www.numfocus[...]
2017-10-05
[7]
웹사이트
Credits – Matplotlib 2.2.2 documentation
https://matplotlib.o[...]
2018-04-11
[8]
웹사이트
NumFOCUS Sponsored Projects
https://numfocus.org[...]
NumFOCUS
2021-10-25
[9]
웹사이트
Matplotlib: Python plotting — Matplotlib 3.2.0 documentation
https://matplotlib.o[...]
2020-03-14
[10]
웹사이트
Animations using Matplotlib
https://matplotlib.o[...]
matplotlib.org
2024-08-30
[11]
웹사이트
Toolkits
https://matplotlib.o[...]
matplotlib.org
[12]
웹사이트
The Matplotlib Basemap Toolkit User's Guide (v. 1.0.5)
https://matplotlib.o[...]
2013-04-24
[13]
웹사이트
Cartopy
http://scitools.org.[...]
2013-04-24
[14]
웹사이트
tikzplotlib
https://github.com/n[...]
2016-11-07
[15]
웹사이트
GeoPandas 0.14.4 — GeoPandas 0.14.4+0.g60c9773.dirty documentation
https://geopandas.or[...]
2024-04-29
[16]
간행물
geopandas: Geographic pandas extensions
https://pypi.org/pro[...]
2024-04-29
[17]
웹사이트
Using cartopy with matplotlib — cartopy 0.15.0 documentation
https://scitools.org[...]
2024-04-30
[18]
웹사이트
Bigglessimple, elegant python plotting
http://biggles.sourc[...]
biggles.sourceforge.net
2010-11-24
[19]
웹사이트
Chaco
http://docs.enthough[...]
code.enthought.com
[20]
웹사이트
Gnuplot.py on
http://gnuplot-py.so[...]
gnuplot-py.sourceforge.net
2010-11-24
[21]
웹사이트
Bokeh 2.0.0 Documentation
https://docs.bokeh.o[...]
2020-03-14
[22]
웹사이트
What's new in matplotlib
http://matplotlib.or[...]
2012-11-13
[23]
웹사이트
John Hunter Memorial Fund
http://numfocus.org/[...]
2012-11-13
[24]
웹사이트
PSF Distinguished Service Awards
http://python.org/co[...]
2013-02-16
[25]
웹인용
Copyright Policy
http://matplotlib.or[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com