Matplotlib là một thư viện giống như GNUplot. Ưu điểm chính so với GNUplot đó là Matplotlib là một module của Python. Do mức độ phổ biến của python ngày càng tăng, nên matplotlib cũng nhận được sự quan tâm tương tự.
Một lý do khác cho sự hấp dẫn của Matplotlib nằm ở chỗ nó được xem là một sự lựa chọn hoàn hảo thay thế cho MATLAB, nếu nó được sử dụng kết hợp với Numpy và Scipy. Trong khi MATLAB đắt đỏ và mã nguồn đóng, Matplotlib lại miễn phí và mã nguồn mở. Nó cũng là ngôn ngữ hướng đối tượng. Hơn nữa, nó có thể được sử dụng với bộ công cụ GUI mục đích chung như wxPython, Qt, và GTK+. Cũng có một thủ tục “pylab”, được thiết kế để giống với MATLAB. Điều này có thể làm cho những người quen sử dụng MATLAB dễ dàng chuyển sang dùng matplotlib.
Matplotlib có thể được sử dụng để tạo ra những figures đủ chất lượng cho một loạt các định dạng hardcopy và môi trường tương tác trên nền tảng.
Một đặc điểm khác của matplotlib là tốc độ lĩnh hội, có nghĩa là người dùng thường đạt được tiến bộ nhanh chóng sau khi bắt đầu. Các trang web chính thức có thể nói những điều sau đây: “matplotlib cố gắng làm những điều khó khăn, phức tạp trở lên dễ dàng nhất có thể. Bạn có thể tạo ra các hình vẽ, histograms, phổ, biểu đồ thanh, errorcharts, scatterplots, vv, với chỉ một vài dòng mã.”
Matplotlib có một số interfaces để tương tác với thư viện matplotlib: Object-Oriented API, The Scripting Interface (pyplot), The MATLAB Interface (pylab). Pyplot và pylab đều là lightweight interfaces, tuy nhiên Pyplot cung cấp một giao diện thủ tục các thư viện vẽ hướng đối tượng trong matplotlib. Các lệnh vẽ của nó được thiết kế tương tự với Matlab cả về cách đặt tên và ý nghĩa các đối số. Cách thiết kế này đã giúp cho việc sử dụng pyplot dễ dàng và dễ hiểu hơn vì vậy trong các bài viết về Matplotlib, tôi sẽ sử dụng giao diện pyplot thay vì hai giao diện còn lại. Nếu chúng ta muốn can thiệp sâu hơn, với nhiều tùy chỉnh hơn thì Object-Oriented API sẽ là lựa chọn thích hợp.
Import giao diện pyplot (giao diện tôi sẽ sử dụng trong hướng dẫn)
>>> import matplotlib.pyplot as plt
>>>
Import giao diện pylab
>>> from pylab import *
>>>
Import giao diện Object-Oriented API
>>> from matplotlib.backends.backend_agg import FigureCanvasAgg
>>> from matplotlib.figure import Figure
Chúng ta sẽ bắt đầu với một vài biểu đồ đơn giản. Một đồ thị là đồ thị hai hoặc ba chiều thể hiện mối quan hệ qua các điểm, đường cong, hoặc các bars.
Chú ý:
Nếu ta sử dụng ipython, ta cần thêm “%matplotlib inline” trước khi vẽ.
Để hiển thị hình vẽ (plot) ta sử dụng plt.show()
Line plot
Vẽ một line graph từ một danh sách sinh ngẫu nhiên.
>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> plt.plot(np.random.randint(20,size=100))
[<matplotlib.lines.Line2D object at 0x00000000052C0080>]
>>> plt.show()
Scatter plot
Sinh ngẫu nhiên 1000 điểm và biểu diễn chúng trên đồ thị bằng đồ thị rời rạc (Scatter).
Import thư viện và sinh dữ liệu:
>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> x = np.random.randn(1000)
>>> y = np.random.randn(1000)
Sử dụng plot() để vẽ đồ thị rời rạc.
>>> plt.plot(x,y,"ob")
[<matplotlib.lines.Line2D object at 0x00000000057C8358>]
>>> plt.show()
Hoặc ta cũng có thể sử dụng scatter()
>>> plt.scatter(x,y)
<matplotlib.collections.PathCollection object at 0x0000000005D21160>
>>> plt.show()
Bar Chart
Vẽ biểu đồ thanh (bar chart) từ danh ngẫu nhiên.
>>> y = [3, 10, 7, 5, 3, 4.5, 6, 8.1]
>>> N = len(y)
>>> x = range(N)
>>> width = 1/1.5
>>> plt.bar(x, y, width, color="blue")
<Container object of 8 artists>
>>> plt.show()
Kết Luận
Qua bài học chúng ta đã được giới thiệu về tầm quan trọng của matplotlib và ba interfaces mà matplotlib cung cấp để tương tác với nó. Đồng thời, chúng ta cũng làm quen với một số loại biểu đồ đơn giản như biểu đồ đường, biểu đồ rời rạc và biểu đồ thanh. Chúng ta sẽ đi sâu hơn trong các bài học tiếp theo.