Đồ thị của phương trình bậc nhất được tạo bằng thư viện NumPy và Matplotlib trong Python.
Máy Tính

Cách Vẽ Đồ Thị, Biểu Đồ Bằng Python Miễn Phí Thay Thế Máy Tính Cầm Tay

Máy tính cầm tay đồ họa (graphing calculator) là công cụ quen thuộc và hữu ích trong các môn toán học và khoa học, nhưng chúng thường có giá thành khá cao và ít có sự đổi mới đáng kể kể từ khi ra mắt vào năm 1985. Trong thời đại công nghệ số hiện nay, bạn hoàn toàn có thể vẽ đồ thị bằng Python và tạo các loại biểu đồ bằng Python một cách dễ dàng, hoàn toàn miễn phí, với sự hỗ trợ của các thư viện chuyên dụng. Python không chỉ cung cấp một giải pháp thay thế hiệu quả về chi phí mà còn mang lại sự linh hoạt và khả năng tùy biến vượt trội, giúp bạn trực quan hóa dữ liệu và các hàm số một cách mạnh mẽ hơn rất nhiều so với các thiết bị truyền thống. Bài viết này sẽ hướng dẫn chi tiết cách bạn có thể sử dụng Python để tạo ra các loại đồ thị và biểu đồ từ cơ bản đến thống kê chuyên sâu.

Biểu Đồ Cơ Bản Với NumPy và Matplotlib

Việc tạo ra các đồ thị hàm số bậc nhất và đa thức cơ bản bằng Python là điều vô cùng đơn giản. Một lợi thế đáng kể khi sử dụng Python là bạn sẽ không bị giới hạn bởi màn hình đơn sắc như các máy tính đồ họa cũ kỹ, một vấn đề mà tác giả của truyện tranh xkcd đã từng châm biếm. Cách tốt nhất để thực hiện điều này là chạy Python trong terminal hoặc sử dụng môi trường Jupyter Notebook. Nếu bạn chọn terminal, việc sử dụng IPython rất được khuyến nghị, bởi nó cung cấp nhiều tính năng giúp tương tác dễ dàng hơn và cũng là nền tảng cho việc sử dụng Python trong Jupyter.

Để bắt đầu, bạn cần nhập thư viện NumPy vào phiên làm việc hoặc script Python của mình. NumPy là một thư viện mạnh mẽ cho các phép toán số học, đặc biệt hữu ích khi làm việc với các mảng và ma trận.

import numpy as np

Việc rút gọn lệnh nhập (alias 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. Đây là thư viện cốt lõi cho việc tạo ra các đồ thị tĩnh, động và tương tác trong Python.

import matplotlib.pyplot as plt

Nếu bạn đang làm việc trong một Jupyter Notebook, các đồ thị bạn tạo ra có thể sẽ xuất hiện trong một cửa sổ riêng biệt. Để hiển thị chúng ngay trong notebook, bạn có thể sử dụng “lệnh thần kỳ” (magic command) sau:

%matplotlib inline

Sau khi hoàn tất các bước chuẩn bị ban đầu này, chúng ta có thể bắt đầu định nghĩa các phương trình để vẽ đồ thị.

Để vẽ đồ thị của một phương trình bậc nhất, hãy nhớ rằng dạng chuẩn là y = mx + b, trong đó m là độ dốc (độ nghiêng) của đường thẳng và b là giao điểm với trục y (trục tung trên mặt phẳng 2D).

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ụ, lệnh sau sẽ thiết lập một trục x gồm 50 điểm dữ liệu trong khoảng từ -10 đến 10:

np.linspace(-10,10)

Chúng ta sẽ lưu trữ độ 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, nhưng việc sử dụng biến sẽ giúp chúng ta thay đổi giá trị dễ dàng hơn. Chúng ta sẽ sử dụng biến “m” cho độ dốc, với giá trị là 3.5:

m = 3.5

Và sử dụng “b” cho giao điểm trục y, với giá trị là 5:

b = 5

Giá trị trục y sẽ là kết quả của việc nhân mỗi giá trị của x với độ dốc và cộng với giao điểm trục y:

y = m*x + b

Bây giờ, chúng ta sẽ tạo đồ thị của mình:

plt.plot(x,y)
plt.grid()

Đồ thị của phương trình bậc nhất được tạo bằng thư viện NumPy và Matplotlib trong Python.Đồ thị của phương trình bậc nhất được tạo bằng thư viện NumPy và Matplotlib trong Python.

Lệnh plt.plot() gọi Matplotlib để vẽ các giá trị x và y, trong khi lệnh plt.grid() tạo ra một lưới phía sau đồ thị giúp chúng ta nhìn rõ các trục hơn.

Bạn có thể vẽ đồ thị của 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 kinh điển có dạng ax² + bx + c. Chúng ta có thể đặt các biến cho a, b, và c cũng như tạo một trục x:

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ị parabol của phương trình bậc hai được vẽ bằng NumPy và Matplotlib.Đồ thị parabol của phương trình bậc hai được vẽ bằng NumPy và Matplotlib.

Trong đại số, phép nhân thường được ngầm định (ví dụ: “ax”), nhưng trong Python, bạn phải định nghĩa nó một cách rõ ràng, ví dụ: a*x. Toán tử ** cũng là toán tử lũy thừa trong Python. Do đó, trong Python được viết là x**2. Các đa thức bậc cao hơn, như bậc ba (lũy thừa ba) và bậc bốn (lũy thừa bốn), cũng hoạt động tương tự.

Tạo Biểu Đồ Đại Số Với SymPy

Một lựa chọn thay thế cho việc sử dụng NumPy là SymPy, một thư viện đại số máy tính (computer algebra library) cho Python. SymPy hoạt động trên các ký hiệu (symbols) giống như cách một máy tính số hoặc chương trình Python thông thường làm việc với 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 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 có tên isympy mà bạn có thể chạy từ terminal, nó sẽ tự động tải thư viện, định nghĩa một số biến phổ biến như x và y cho bạn, thiết lập “pretty-printing” (hiển thị đẹp mắt), 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()

Dòng lệnh này yêu cầu Python nhập tất cả các hàm từ SymPy vào không gian tên chính, định nghĩa một biến x mang tính biểu tượng, và thiết lập chế độ “pretty printing”. Điều này sẽ làm cho đầu ra trông giống như trong sách giáo khoa toán học hơn. 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ẽ đồ thị phương trình bậc nhất từ phần trước bằng SymPy:

m = 3.5
b = 5
plot(m*x + b,(x,-10,10))

Đồ thị phương trình tuyến tính 3x + 5 được tạo bằng thư viện SymPy.Đồ thị phương trình tuyến tính 3x + 5 được tạo bằng thư viện SymPy.

Hàm plot tạo ra một đồ thị 2D với dạng slope-intercept của phương trình, và phần (x,-10,10) chỉ định phạm vi của đồ thị, trong khoảng 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 đó. Hãy lưu ý rằng các trục được đặt ngay trên đồ thị.

Hãy nhớ đóng tất cả các dấu ngoặc đơn. IPython và Jupyter sẽ giúp bạn bằng cách làm nổi bật các dấu ngoặc khi bạn gõ chúng.

Đồ thị phương trình bậc hai và các đa thức khác cũng hoạt động tương tự:

a = 1
b = 2
c = -3
plot(a*x**2 + b*x + c,(x,-10,10))

Đồ thị của một phương trình bậc hai hình parabol được tạo ra trong SymPy.Đồ thị của một phương trình bậc hai hình parabol được tạo ra trong SymPy.

Thực Hiện Biểu Đồ Thống Kê Với Python

Ngoài việc vẽ các đường và đường cong hàm số, Python còn có thể được sử dụng để tạo các biểu đồ thống kê. Chắc chắn, bạn có thể thực hiện điều này trong các phần mềm bảng tính như Excel, LibreOffice Calc hoặc Google Sheets, nhưng nhiều người sẽ thấy rằng đầu ra của Python 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, tương tự như cách bạn làm việc với một máy tính cầm tay đồ họa trong một khóa 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

Cũng như với NumPy ở trên, việc nhập theo cách này sẽ giúp bạn tiết kiệm thời gian gõ phím.

Seaborn có một số bộ dữ liệu mẫu được tích hợp sẵn để bạn có thể thử nghiệm. Chúng ta sẽ sử dụng một bộ dữ liệu về tiền tip 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 này, vốn ở đị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, minh họa cấu trúc dữ liệu.Bảng hiển thị kết quả của lệnh tips.head() trong Jupyter Notebook, minh họa cấu trúc dữ liệu.

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 tệp CSV:

import pandas as pd
data = pd.read_csv("/path/to/data.csv")

Sau khi dữ liệu được tải vào, chúng ta có thể bắt đầu khám phá nó. Để xem 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 trong các ngày trong tuần được vẽ bằng Seaborn.Biểu đồ cột thể hiện tổng hóa đơn nhà hàng trong các ngày trong tuần được vẽ bằng Seaborn.

Một loại đồ thị hữu ích khác là biểu đồ tần suất (histogram), thể hiện sự phân bố của dữ liệu. Để xem các khoản tiền tip thường gặp nhất, hãy sử dụng hàm displot:

sns.displot(x='tip',data=tips)

Biểu đồ tần suất (histogram) về tiền tip nhà hàng được tạo ra bằng Seaborn.Biểu đồ tần suất (histogram) về tiền tip nhà hàng được tạo ra bằng Seaborn.

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 trực quan hóa phạm vi dữ liệu của mình. Hãy cùng xem lại tổng hóa đơn, nhưng lần này thay đổi 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 (boxplot) thể hiện tổng hóa đơn nhà hàng được vẽ bằng Seaborn, minh họa phân bố dữ liệu.Biểu đồ hộp (boxplot) thể hiện tổng hóa đơn nhà hàng được vẽ bằng Seaborn, minh họa phân bố dữ liệu.

Các hộp trong biểu đồ hiển thị 50% dữ liệu ở giữa, hoặc giá trị trung vị (median) được biểu thị bằng đường kẻ ở giữa. Trong khi đó, các đường ở trên và dưới, được gọi là “râu” (whiskers), đại diện cho 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)hồi quy (regression). 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 giữa chúng hay không.

Hãy cùng xem xét mối quan hệ giữa tiền tip nhà hàng và tổng hóa đơn.

sns.relplot(x='total_bill',y='tip',data=tips)

Biểu đồ phân tán mối quan hệ giữa tiền tip và tổng hóa đơn, được tạo bằng thư viện Seaborn.Biểu đồ phân tán mối quan hệ giữa tiền tip và tổng hóa đơn, được tạo bằng thư viện Seaborn.

Bạn có nhận thấy các giá trị dường như nằm trên một đường thẳng không? Chúng ta có thể trực quan hóa điều này bằng một đường hồi quy sử dụng hàm regplot. Về cơ bản, nó là relplot được thay đổi bởi một chữ cái duy nhất:

sns.regplot(x='total_bill',y='tip',data=tips)

Biểu đồ hồi quy tuyến tính thể hiện mối quan hệ giữa tiền tip và tổng hóa đơn, được vẽ bằng Seaborn.Biểu đồ hồi quy tuyến tính thể hiện mối quan hệ giữa tiền tip và tổng hóa đơn, được vẽ bằng Seaborn.

Bạn sẽ thấy đường hồi quy được chồng lên trên biểu đồ phân tán gốc. Mặc dù 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ư nó đã là một sự phù hợp tốt chỉ bằng cách kiểm tra đường hồi quy 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 chiếc máy tính đồ họa 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ỉ để giải trí, việc vẽ đồ thị bằng Python mang lại trải nghiệm tốt hơn với các biểu đồ đẹp mắt và quan trọng nhất là hoàn toàn miễn phí. Bạn không cần phải là một “mọt toán” để trân trọng giá trị to lớn này. Python và các thư viện như NumPy, Matplotlib, SymPy, và Seaborn cung cấp bộ công cụ mạnh mẽ, linh hoạt để tạo biểu đồ bằng Pythontrực quan hóa dữ liệu Python một cách chuyên nghiệp, giúp bạn tiết kiệm chi phí và nâng cao kỹ năng xử lý dữ liệu. Hãy bắt đầu khám phá thế giới trực quan hóa dữ liệu với Python ngay hôm nay và biến những ý tưởng phức tạp thành những hình ảnh rõ ràng, dễ hiểu!

Related posts

Đã đến lúc Apple cần trang bị kết nối 5G tích hợp cho MacBook

Administrator

Cách Khắc Phục Lỗi AutoSave Không Hoạt Động Trong Microsoft 365 và OneDrive

Administrator

Microsoft Hợp Tác uBreakiFix: Dịch Vụ Sửa Chữa Surface Dễ Dàng Hơn Tại Mỹ

Administrator