Trong kỷ nguyên công nghệ số, việc trực quan hóa dữ liệu và biểu diễn các hàm toán học là kỹ năng thiết yếu cho nhiều lĩnh vực, từ khoa học, kỹ thuật đến phân tích dữ liệu. Tuy nhiên, nhiều người vẫn còn phụ thuộc vào những chiếc máy tính đồ thị truyền thống, vốn đắt đỏ và không có nhiều cải tiến đáng kể kể từ khi ra mắt vào năm 1985. Điều này đặt ra một câu hỏi: liệu có giải pháp nào hiệu quả hơn, miễn phí và linh hoạt hơn để tạo đồ thị? Câu trả lời chính là Python – một ngôn ngữ lập trình mạnh mẽ, cho phép bạn tạo ra vô số loại đồ thị và biểu đồ một cách dễ dàng với sự trợ giúp của các thư viện chuyên dụng. Trang web tinmoicongnghe.com sẽ cùng bạn khám phá cách tận dụng Python để vẽ đồ thị cơ bản và biểu đồ thống kê chuyên sâu, biến nó thành một công cụ trực quan hóa dữ liệu vượt trội, giúp bạn tiết kiệm chi phí và nâng cao khả năng làm việc với dữ liệu.
Vẽ Đồ Thị Cơ Bản Với NumPy và Matplotlib
Việc tạo các đồ thị tuyến tính (đường thẳng) và đồ thị đa thức (như parabol) cơ bản trở nên cực kỳ đơn giản với Python. Một ưu điểm nổi bật so với các máy tính đồ thị truyền thống chỉ có màn hình đơn sắc là khả năng tạo ra đồ thị màu sắc, sinh động và dễ hiểu hơn. Để bắt đầu, bạn có thể chạy Python trong terminal hoặc sử sử dụng Jupyter Notebook – một môi trường lập trình tương tác rất được ưa chu chuộng. Nếu bạn làm việc trong terminal, IPython là lựa chọn tuyệt vời với nhiều tính năng tương tác hỗ trợ.
Để sử dụng các thư viện cần thiết, bạn sẽ cần nhập chúng vào phiên làm việc hoặc script Python của mình.
Đầu tiên, hãy nhập NumPy – một thư viện mạnh mẽ để tính toán số học:
import numpy as np
Việc rút ngắn tên lệnh thành np
sẽ giúp bạn gõ code nhanh và tiện lợi hơn.
Tiếp theo, bạn cần nhập thư viện vẽ đồ thị Matplotlib, cụ thể là module pyplot
:
import matplotlib.pyplot as plt
Nếu bạn đang làm việc trong Jupyter Notebook, các đồ thị có thể sẽ hiển thị trong một cửa sổ riêng biệt. Để chúng hiển thị trực tiếp trong notebook, bạn có thể sử dụng “lệnh thần kỳ” (magic command) sau:
%matplotlib inline
Với những bước chuẩn bị cơ bản này, chúng ta đã sẵn sàng định nghĩa các phương trình để vẽ đồ thị.
Vẽ Phương Trình Tuyến Tính (y = mx + b)
Để vẽ một phương trình tuyến tính, hãy nhớ rằng dạng hệ số góc-điểm cắt trục y là y = mx + b
, trong đó “m” là độ dốc của đường thẳng và “b” là điểm cắt trục y (điểm mà đường thẳng cắt trục tung).
Chúng ta sẽ thiết lập trục x bằng lệnh np.linspace
, lệnh này sẽ tạo ra một mảng các giá trị được phân bố đều. Ví dụ, để tạo 50 điểm dữ liệu trên trục x nằm giữa -10 và 10:
x = np.linspace(-10,10)
Chúng ta sẽ lưu độ dốc vào một biến. Mặc dù bạn có thể đặt trực tiếp vào công thức, việc sử dụng biến sẽ giúp thay đổi giá trị dễ dàng hơn. Chúng ta sẽ dùng biến “m” cho độ dốc, ví dụ m = 3.5
:
m = 3.5
Và biến “b” cho điểm cắt trục y, ví dụ b = 5
:
b = 5
Trục y sẽ nhân mỗi giá trị của x với độ dốc và cộng với điểm cắt trục y:
y = m*x + b
Giờ hãy tạo đồ thị của chúng ta:
plt.plot(x,y)
plt.grid()
Biểu đồ phương trình tuyến tính y=3.5x+5 được tạo bằng NumPy và Matplotlib, hiển thị một đường thẳng với lưới tọa độ
Lệnh plt.plot()
gọi Matplotlib để vẽ các giá trị x và y, trong khi lệnh plt.grid()
tạo một lưới phía sau đồ thị giúp chúng ta dễ dàng nhìn thấy các trục tọa độ hơn.
Vẽ Phương Trình Bậc Hai (ax² + bx + c)
Bạn có thể vẽ một phương trình bậc hai bằng một phương pháp tương tự. Một phương trình bậc hai cổ điển có dạng ax² + bx + c
. Chúng ta có thể đặt các biến cho a, b, c cũng như tạo một trục x tương tự:
x = np.linspace(-10,10)
a = 1
b = 2
c = -3
y = a*x**2 + b*x + c
plt.plot(x,y)
plt.grid()
Đồ thị phương trình bậc hai y=x^2+2x-3 hiển thị một parabol điển hình, tạo bằng NumPy và Matplotlib
Trong đại số, phép nhân thường được ngụ ý (ví dụ: “ax”), nhưng trong Python, bạn phải định nghĩa rõ ràng bằng ký hiệu *
. Ví dụ: a*x
.
Toán tử **
cũng là toán tử lũy thừa trong Python. Vì vậy, x² trong Python được viết là x**2
.
Các đa thức bậc cao hơn, như bậc ba (cubed) và bậc bốn (raised to the fourth power), hoạt động tương tự.
Tạo Đồ Thị Đại Số Với SymPy
Một lựa chọn khác thay vì sử dụng NumPy là SymPy, một thư viện đại số máy tính cho Python. SymPy hoạt động trên các ký hiệu theo cách mà một máy tính số hoặc chương trình Python thông thường hoạt động trên các con số. Đối với việc vẽ đồ thị, NumPy cung cấp một cách ngắn gọn hơn để định nghĩa phương trình, tương tự như cách bạn làm việc với bút chì và giấy.
Bạn có thể cài đặt SymPy bằng pip:
pip install sympy
Để làm việc với SymPy, bạn phải nhập nó và định nghĩa các biến ký hiệu. SymPy bao gồm một script gọi là isympy
mà bạn có thể chạy từ terminal để tải nó và định nghĩa một số biến phổ biến như x và y cho bạn, thiết lập in đẹp, sau đó bắt đầu một phiên tương tác. Bạn cũng có thể thiết lập nó trong Jupyter Notebook hoặc phiên Python tương tác thông thường:
from sympy import *
x = symbols('x')
init_printing()
Lệnh này yêu cầu Python nhập SymPy vào không gian tên chính, định nghĩa một biến x ký hiệu và thiết lập “pretty printing” (in đẹp). Điều này sẽ làm cho đầu ra trông giống như trong một sách giáo khoa toán học. Các biến ký hiệu phải được định nghĩa trước khi bạn có thể sử dụng chúng với SymPy.
Chúng ta có thể sử dụng các biến thông thường cho các hệ số như đã làm với NumPy. Hãy vẽ phương trình tuyến tính từ trước đó bằng SymPy:
m = 3.5
b = 5
plot(m*x + b,(x,-10,10))
Phương trình tuyến tính y=3.5x+5 được vẽ bằng SymPy, hiển thị đường thẳng với các trục tọa độ được tích hợp sẵn
Hàm plot
tạo ra một đồ thị 2D với dạng hệ số góc-điểm cắt trục y của phương trình, và phần (x,-10,10)
chỉ định phạm vi của đồ thị, giữa các giá trị x từ -10 đến 10. Đây cũng sẽ là phạm vi mặc định nếu bạn bỏ qua phần đó. Lưu ý rằng các trục nằm ngay trong đồ thị.
Đa thức bậc hai và các đa thức khác hoạt động tương tự:
a = 1
b = 2
c = -3
plot(a*x**2 + b*x + c,(x,-10,10))
Đồ thị phương trình bậc hai y=x^2+2x-3 được tạo trong SymPy, hiển thị một parabol
Thực Hiện Các Biểu Đồ Thống Kê Mạnh Mẽ Với Seaborn
Ngoài việc vẽ các đường và đường cong, Python có thể được sử dụng để tạo các biểu đồ thống kê. Chắc chắn, bạn có thể làm điều này trong một bảng tính như Excel, LibreOffice Calc hoặc Google Sheets, nhưng kết quả đầu ra của Python thường trông đẹp mắt và chuyên nghiệp hơn rất nhiều.
Trong phần này, chúng ta sẽ sử dụng thư viện Seaborn để trực quan hóa dữ liệu thống kê bằng Python, theo cách bạn sẽ làm với máy tính đồ thị trong một lớp học thống kê.
Bạn có thể cài đặt Seaborn bằng pip:
pip install seaborn
Hãy nhập Seaborn vào phiên IPython hoặc Jupyter Notebook của chúng ta:
import seaborn as sns
Giống như NumPy trước đó, việc nhập theo cách này sẽ giúp tiết kiệm công sức gõ phím.
Seaborn có một số bộ dữ liệu đi kèm để bạn thực hành. Chúng ta sẽ sử dụng một bộ dữ liệu về tiền boa tại các nhà hàng ở New York:
tips = sns.load_dataset('tips')
Chúng ta có thể xem các cột của bộ dữ liệu của mình, ở định dạng của một Pandas dataframe (tương tự như một bảng tính), bằng cách sử dụng hàm head()
:
tips.head()
Bảng hiển thị kết quả của lệnh tips.head() trong Jupyter Notebook của Python, cho thấy các hàng đầu tiên của tập dữ liệu tiền boa của nhà hàng
Bạn thậm chí có thể nhập dữ liệu bảng tính của riêng mình từ Excel hoặc một chương trình khác. Ví dụ, để đọc một file CSV:
import pandas as pd
data = pd.read_csv("/path/to/data.csv")
Với dữ liệu đã được tải, chúng ta có thể bắt đầu khám phá nó. Để xem một biểu đồ cột đơn giản về tổng hóa đơn trong các ngày trong tuần, hãy sử dụng hàm catplot
:
sns.catplot(x='day',y='total_bill',kind='bar',data=tips)
Biểu đồ cột thể hiện tổng hóa đơn nhà hàng theo các ngày trong tuần, tạo bằng Seaborn
Một biểu đồ hữu ích khác là biểu đồ tần suất (histogram), hiển thị sự phân phối của dữ liệu. Để xem các số tiền boa phổ biến nhất, hãy sử dụng hàm displot
:
sns.displot(x='tip',data=tips)
Biểu đồ tần suất Seaborn thể hiện phân phối tiền boa nhà hàng, với các cột thể hiện tần suất các mức tiền boa
Một biểu đồ hộp (boxplot), hay chính xác hơn là biểu đồ hộp và râu (box-and-whisker plot), sẽ giúp bạn hình dung phạm vi dữ liệu của mình. Hãy xem lại tổng hóa đơn, nhưng sửa loại biểu đồ từ biểu đồ cột sang biểu đồ hộp:
sns.catplot(x='day',y='total_bill',kind='box',data=tips)
Biểu đồ hộp và râu của Seaborn hiển thị sự phân phối tổng hóa đơn nhà hàng theo các ngày trong tuần
Các hộp hiển thị 50% giữa, hay trung vị, của mỗi danh mục, được thể hiện bằng đường kẻ ở giữa, trong khi các đường kẻ ở trên và dưới, “râu” (whiskers), đại diện cho các giá trị tối đa và tối thiểu.
Một cách mạnh mẽ để xem xét dữ liệu là thông qua biểu đồ phân tán (scatterplot) và hồi quy. Biểu đồ phân tán xem xét một biến độc lập trên trục x so với một biến phụ thuộc trên trục y để xem liệu có mối quan hệ nào không.
Hãy xem xét mối quan hệ giữa tiền boa nhà hàng và tổng hóa đơn.
sns.relplot(x='total_bill',y='tip',data=tips)
Biểu đồ phân tán giữa tiền boa và tổng hóa đơn được tạo bằng Seaborn, cho thấy mối quan hệ giữa hai biến
Bạn có nhận thấy các giá trị dường như thẳng hàng dọc theo một đường thẳng không? Chúng ta có thể hình dung điều này bằng một đường hồi quy sử dụng hàm regplot
. Về cơ bản, đó là “relplot” được thay đổi chỉ bằng một chữ cái:
sns.regplot(x='total_bill',y='tip',data=tips)
Đường hồi quy tuyến tính của tiền boa so với tổng hóa đơn được tạo bằng Seaborn, với đường hồi quy chồng lên biểu đồ phân tán gốc
Bạn sẽ thấy đường thẳng được chồng lên biểu đồ phân tán ban đầu. Bạn có thể thực hiện phân tích hồi quy chính thức hơn để xác định mức độ tương quan, nhưng có vẻ như đã có một sự phù hợp tốt chỉ bằng cách kiểm tra đường thẳng so với các điểm dữ liệu.
Kết Luận
Mặc dù bạn có thể vẫn cần giữ lại máy tính đồ thị của mình cho các kỳ thi, nhưng khi làm bài tập, khám phá dữ liệu hoặc thậm chí chỉ đơn giản là thử nghiệm, việc vẽ đồ thị bằng Python mang lại chất lượng hình ảnh tốt hơn và hoàn toàn miễn phí. Bạn không cần phải là một “mọt sách” toán học để đánh giá cao giá trị này. Python không chỉ là một công cụ lập trình, mà còn là một “phòng thí nghiệm” trực quan hóa dữ liệu di động, mạnh mẽ và tiết kiệm. Hãy bắt đầu hành trình khám phá và làm chủ nghệ thuật trực quan hóa dữ liệu với Python ngay hôm nay và biến tinmoicongnghe.com
thành nguồn tham khảo hàng đầu của bạn!