역사 #

메모

다음 소개 글은 Matplotlib의 원 저자인 John D. Hunter(1968-2012)가 2008년에 작성한 것입니다.

Matplotlib는 Python 에서 배열의 2D 플롯을 만들기 위한 라이브러리입니다 . MATLAB 그래픽 명령을 에뮬레이션하는 데 그 기원이 있지만 MATLAB과 독립적이며 Python과 같은 객체 지향 방식으로 사용할 수 있습니다. Matplotlib은 주로 순수 Python으로 작성되었지만 NumPy 및 기타 확장 코드를 많이 사용하여 대형 배열에서도 우수한 성능을 제공합니다.

Matplotlib는 몇 가지 명령 또는 단 하나의 명령으로 간단한 플롯을 만들 수 있어야 한다는 철학으로 설계되었습니다! 데이터의 히스토그램을 보려면 개체를 인스턴스화하고, 메서드를 호출하고, 속성을 설정하는 등의 작업을 수행할 필요가 없습니다. 그냥 작동해야합니다.

수년 동안 저는 데이터 분석 및 시각화에만 MATLAB을 사용했습니다. MATLAB은 보기 좋은 플롯을 쉽게 만드는 데 탁월합니다. EEG 데이터로 작업을 시작했을 때 데이터와 상호 작용할 애플리케이션을 작성해야 한다는 사실을 알게 되었고 MATLAB에서 EEG 분석 애플리케이션을 개발했습니다. 응용 프로그램이 복잡해지고 데이터베이스, http 서버와 상호 작용하고 복잡한 데이터 구조를 조작하면서 프로그래밍 언어로서 MATLAB의 한계에 부담을 느끼기 시작했고 Python에서 다시 시작하기로 결정했습니다. Python은 프로그래밍 언어로서 MATLAB의 모든 결함을 보완하는 것 이상이지만 2D 플로팅 패키지를 찾는 데 어려움을 겪었습니다(3D VTK 의 경우 모든 요구 사항을 초과함).

Python 플로팅 패키지를 검색할 때 몇 가지 요구 사항이 있었습니다.

  • 플롯은 멋지게 보여야 합니다 - 출판 품질. 저에게 중요한 요구 사항 중 하나는 텍스트가 좋아 보인다는 것입니다(앤티앨리어싱 등).

  • TeX 문서에 포함하기 위한 포스트스크립트 출력

  • 애플리케이션 개발을 위해 그래픽 사용자 인터페이스에 내장 가능

  • 코드는 내가 이해하고 확장할 수 있을 만큼 쉬워야 합니다.

  • 플롯 만들기는 쉬워야 합니다.

나에게 딱 맞는 패키지를 찾지 못한 나는 자존심이 강한 Python 프로그래머가 할 일을 했습니다. 소매를 걷어붙이고 뛰어들었습니다. 컴퓨터 그래픽에 대한 실제 경험이 없었기 때문에 MATLAB의 플로팅 기능을 에뮬레이션하기로 결정했습니다. 아주 잘합니다. 이것은 많은 사람들이 많은 MATLAB 경험을 가지고 있고 따라서 그들은 빠르게 파이썬으로 플로팅을 시작할 수 있다는 추가 이점을 가졌습니다. 개발자의 관점에서 볼 때 고정된 사용자 인터페이스(pylab 인터페이스)를 갖는 것은 매우 유용했습니다. 사용자 코드에 영향을 주지 않고 코드 베이스의 핵심을 재설계할 수 있기 때문입니다.

Matplotlib 코드는 개념적으로 세 부분으로 나뉩니다. pylab 인터페이스 는 사용자가 MATLAB 그림 생성 코드( Pyplot 자습서pylab ) 와 매우 유사한 코드로 플롯을 만들 수 있도록 하는 기능 집합입니다 . Matplotlib 프론트엔드 또는 Matplotlib API 는 어려운 작업을 수행하고 그림, 텍스트, 선, 플롯 등을 만들고 관리하는 일련의 클래스입니다( 아티스트 자습서 ). 이것은 출력에 대해 아무것도 모르는 추상 인터페이스입니다. 백엔드 는 프런트엔드 표현을 하드카피 또는 디스플레이 장치( 백엔드란?). 백엔드 예: PS 는 PostScript® 하드카피를 생성하고, SVG는 Scalable Vector Graphics 하드카피를 생성하고, Agg는 Matplotlib와 함께 제공되는 고품질 Anti-Grain Geometry 라이브러리를 사용하여 PNG 출력을 생성하고, GTK는 Gtk+ 애플리케이션 에 Matplotlib를 내장하고 , GTKAgg는 Anti-Grain 렌더러를 사용하여 PDF , WxWidgets , Tkinter 등 을 위해 그림을 생성하고 Gtk+ 응용 프로그램에 삽입하는 등의 작업을 수행합니다.

Matplotlib는 다양한 상황에서 많은 사람들이 사용합니다. 어떤 사람들은 프린터나 발행인에게 보낼 PostScript 파일을 자동으로 생성하기를 원합니다. 다른 사람들은 동적으로 생성된 웹 페이지에 포함할 PNG 출력을 생성하기 위해 웹 응용 프로그램 서버에 Matplotlib를 배포합니다. 일부는 Windows의 Tkinter에 있는 Python 셸에서 대화식으로 Matplotlib를 사용합니다. 나의 주된 용도는 Windows, Linux 및 Macintosh OS X에서 실행되는 Gtk+ EEG 응용 프로그램에 Matplotlib를 내장하는 것입니다.


Matplotlib의 원래 로고(2003~2008).

( 소스 코드 , png )

../../_images/history-1.png

Matplotlib 로고(2008 - 2015).

( 소스 코드 , png )

../../_images/history-2.png