Image default
Máy Tính

Vẽ Đồ Thị & Biểu Đồ Với Python: Miễn Phí, Mạnh Mẽ Hơn Máy Tính Bỏ Túi

Máy tính bỏ túi đồ họa từ lâu đã là công cụ không thể thiếu trong các môn học toán và khoa học, nhưng chúng thường đi kèm với mức giá không hề rẻ và công nghệ lại không thay đổi nhiều kể từ khi ra mắt vào năm 1985. Tin vui là bạn hoàn toàn có thể tạo ra các biểu đồ của những phương trình phổ biến và đồ thị thống kê một cách miễn phí bằng Python, chỉ với việc sử dụng đúng các thư viện. Điều này không chỉ giúp bạn tiết kiệm chi phí mà còn mở ra vô vàn khả năng trực quan hóa dữ liệu mạnh mẽ và linh hoạt hơn nhiều so với một chiếc máy tính bỏ túi truyền thống.

Trực Quan Hóa Cơ Bản Với NumPy và Matplotlib

Việc tạo ra các biểu đồ tuyến tính và đa thức cơ bản với Python là điều vô cùng dễ dàng. Một lợi thế đáng kể so với màn hình đơn sắc của máy tính bỏ túi là Python cho phép bạn tạo ra các đồ thị đầy màu sắc và chi tiết hơn, thể hiện sự tiến bộ mà máy tính bỏ túi đồ họa đã bỏ lỡ. Để thực hiện điều này, bạn có thể chạy Python trực tiếp trong terminal (khuyến nghị sử dụng IPython để có trải nghiệm tương tác tốt hơn) hoặc trong môi trường Jupyter Notebook thân thiện với người dùng.

Logo Jupyter Notebook trên màn hình laptop và hình ảnh sao Mộc, biểu tượng cho môi trường lập trình Python mạnh mẽLogo Jupyter Notebook trên màn hình laptop và hình ảnh sao Mộc, biểu tượng cho môi trường lập trình Python mạnh mẽ

Để bắt đầu, bạn cần nhập thư viện NumPy vào phiên Python hoặc tập lệnh của mình. NumPy là thư viện cốt lõi cho các phép toán số học và mảng trong Python. Bạn có thể nhập nó với câu lệnh sau:

import numpy as np

Việc đặt alias np sẽ giúp bạn gõ lệnh nhanh và tiện lợi hơn.

Tiếp theo, bạn cần nhập thư viện Matplotlib, một thư viện trực quan hóa dữ liệu mạnh mẽ. Cú pháp nhập cũng rất đơn giản:

import matplotlib.pyplot as plt

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

%matplotlib inline

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

Để vẽ một phương trình tuyến tính, hãy nhớ dạng hệ số góc của nó là y = mx + b, trong đó m là độ dốc và b là điểm cắt trục y (tung độ gốc).

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ách đều nhau. Ví dụ, để tạo trục x với 50 điểm dữ liệu trong khoảng từ -10 đến 10:

x = np.linspace(-10,10)

Tiếp theo, chúng ta sẽ lưu độ dốc và tung độ gốc vào các biến để dễ dàng thay đổi giá trị. Đặt m = 3.5 cho độ dốc và b = 5 cho tung độ gốc:

m = 3.5
b = 5

Trục y sẽ được tính bằng cách nhân mỗi giá trị của x với độ dốc và cộng với tung độ gốc:

y = m*x + b

Cuối cùng, chúng ta sẽ tạo biểu đồ:

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

Biểu đồ phương trình tuyến tính y = 3.5x + 5 được vẽ bằng thư viện NumPy và Matplotlib trong Python, hiển thị đường thẳng trên hệ trục tọa độ có lướiBiểu đồ phương trình tuyến tính y = 3.5x + 5 được vẽ bằng thư viện NumPy và Matplotlib trong Python, hiển thị đường thẳng trên hệ trục tọa độ có lưới

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

Bạn có thể vẽ một phương trình bậc hai bằng phương pháp tương 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 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()

Biểu đồ phương trình bậc hai y = x^2 + 2x - 3 tạo ra hình parabol, được vẽ bằng NumPy và Matplotlib trong Python, thể hiện khả năng đồ thị hàm sốBiểu đồ phương trình bậc hai y = x^2 + 2x – 3 tạo ra hình parabol, được vẽ bằng NumPy và Matplotlib trong Python, thể hiện khả năng đồ thị hàm số

Trong Python, phép nhân phải được định nghĩa rõ ràng (ví dụ: a*x thay vì ax). Ký hiệu ** được dùng để biểu thị lũy thừa, ví dụ được viết là x**2. Các đa thức bậc cao hơn, như bậc ba (lũy thừa 3) và bậc bốn (lũy thừa 4), cũng hoạt động tương tự.

Tạo Đồ Thị Đại Số Với SymPy

Một lựa chọn thay thế cho NumPy để xử lý các biểu thức đại số là SymPy, một thư viện đại số máy tính cho Python. SymPy hoạt động trên các biểu tượng (symbolic variables) theo cách mà 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 số. Đối với việc vẽ đồ thị, NumPy thường cung cấp cách định nghĩa phương trình ngắn gọn hơn, tương tự như khi 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 biểu tượng. SymPy bao gồm một script có tên isympy mà bạn có thể chạy từ terminal để tự động tải thư viện, định nghĩa một số biến phổ biến như xy, thiết lập chế độ hiển thị đẹp (pretty-printing), 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 cho Python biết hãy nhập SymPy vào không gian tên chính, định nghĩa một biến x có tính chất biểu tượng, và thiết lập chế độ hiển thị đẹp mắt, giúp kết quả trông giống như trong sách giáo khoa toán học. Các biến biểu tượng 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ẽ lại 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))

Đồ thị phương trình tuyến tính 3.5x + 5 được vẽ bằng thư viện SymPy của Python, với đường thẳng hiển thị trên hệ trục tọa độĐồ thị phương trình tuyến tính 3.5x + 5 được vẽ bằng thư viện SymPy của Python, với đường thẳng hiển thị trên hệ trục tọa độ

Hàm plot tạo ra một biểu đồ 2D với dạng hệ số góc 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 này. Lưu ý rằng các trục được đặt ngay trong đồ thị.

Các 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ị phương trình bậc hai y = x^2 + 2x - 3 được tạo bằng SymPy, cho thấy hình dạng parabol, minh họa khả năng vẽ hàm số đại sốĐồ thị phương trình bậc hai y = x^2 + 2x – 3 được tạo bằng SymPy, cho thấy hình dạng parabol, minh họa khả năng vẽ hàm số đại số

Trực Quan Hóa Dữ Liệu Thống Kê Với Seaborn

Ngoài việc vẽ các đường thẳng và đường cong, Python còn có thể được sử dụng để tạo các biểu đồ thống kê chuyên nghiệp. Mặc dù bạn có thể thực hiện điều này trong các chương trình bảng tính như Excel hoặc Google Sheets, nhưng tôi nhận thấy rằng kết quả trực quan từ Python thường đẹp mắt và chuyên nghiệp hơn 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 với máy tính bỏ túi đồ họa trong một lớp học thống kê.

Biểu tượng Seaborn với các yếu tố biểu đồ như thanh, đường sóng và chấm phân tán, minh họa khả năng trực quan hóa dữ liệu thống kê của thư viện Python nàyBiểu tượng Seaborn với các yếu tố biểu đồ như thanh, đường sóng và chấm phân tán, minh họa khả năng trực quan hóa dữ liệu thống kê của thư viện Python này

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, việc nhập Seaborn theo cách này sẽ giúp bạn tiết kiệm thời gian gõ lệnh.

Seaborn có một số tập dữ liệu tích hợp sẵn để bạn có thể thử nghiệm. Chúng ta sẽ sử dụng tập 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 tập dữ liệu, vốn ở định dạng của một Pandas dataframe (tương tự như bảng tính), bằng cách sử dụng hàm head():

tips.head()

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 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")

Với dữ liệu đã được tải, chúng ta có thể bắt đầu phân tích. Để xem biểu đồ cột đơn giản về tổng hóa đơn theo 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 hiển thị tổng hóa đơn tại nhà hàng theo từng ngày trong tuần, được tạo bằng thư viện Seaborn của Python, minh họa trực quan dữ liệu thống kêBiểu đồ cột hiển thị tổng hóa đơn tại nhà hàng theo từng ngày trong tuần, được tạo bằng thư viện Seaborn của Python, minh họa trực quan dữ liệu thống kê

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

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

Biểu đồ phân phối (histogram) thể hiện tần suất số tiền tip tại nhà hàng, được tạo bằng Seaborn trong Python, giúp phân tích dữ liệu phân bốBiểu đồ phân phối (histogram) thể hiện tần suất số tiền tip tại nhà hàng, được tạo bằng Seaborn trong Python, giúp phân tích dữ liệu phân bố

Biểu đồ hộp (boxplot), hay còn gọi 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 lần này thay đổi loại biểu đồ từ cột sang biểu đồ hộp:

sns.catplot(x='day',y='total_bill',kind='box',data=tips)

Biểu đồ hộp (box-and-whisker plot) hiển thị phân bố tổng hóa đơn tại nhà hàng theo ngày, tạo bởi Seaborn trong Python, trực quan hóa phạm vi và trung vị dữ liệuBiểu đồ hộp (box-and-whisker plot) hiển thị phân bố tổng hóa đơn tại nhà hàng theo ngày, tạo bởi Seaborn trong Python, trực quan hóa phạm vi và trung vị dữ liệu

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

Hãy xem xét mối liên 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 (scatterplot) thể hiện mối quan hệ giữa tổng hóa đơn và số tiền tip, được tạo bằng Seaborn của Python, giúp nhận định xu hướng dữ liệuBiểu đồ phân tán (scatterplot) thể hiện mối quan hệ giữa tổng hóa đơn và số tiền tip, được tạo bằng Seaborn của Python, giúp nhận định xu hướng dữ liệu

Bạn có nhận thấy các giá trị dường như nằm thẳng hàng 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ó chỉ là relplot được thay đổi một chữ cái:

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

Biểu đồ hồi quy tuyến tính của số tiền tip so với tổng hóa đơn, hiển thị đường hồi quy trên biểu đồ phân tán, tạo bằng Seaborn Python, minh họa mối tương quanBiểu đồ hồi quy tuyến tính của số tiền tip so với tổng hóa đơn, hiển thị đường hồi quy trên biểu đồ phân tán, tạo bằng Seaborn Python, minh họa mối tương quan

Bạn sẽ thấy đường thẳng được phủ 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 dường như đã có một sự phù hợp tốt khi nhìn vào đường hồi quy so với các điểm dữ liệu.


Mặc dù bạn vẫn có thể cần giữ lại chiếc máy tính bỏ túi đồ họa của mình cho các kỳ thi, nhưng khi làm bài tập về nhà, khám phá dữ liệu hoặc đơn giản là muốn thử nghiệm, các biểu đồ Python trông đẹp hơn, linh hoạt hơn và hoàn toàn miễn phí. Bạn không cần phải là một người đam mê toán học để đánh giá cao giá trị mà Python mang lại trong việc trực quan hóa dữ liệu. Hãy chia sẻ ý kiến của bạn về khả năng vẽ đồ thị của Python hoặc khám phá thêm các hướng dẫn lập trình khác tại trangtincongnghe.net!

Related posts

Windows Recall sắp có Trang chủ mới: Cải thiện trải nghiệm hay chỉ là giải pháp tình thế?

Administrator

Pokémon Sleep: Bí Quyết Bất Ngờ Giúp Tôi Cai Nghiện Điện Thoại Và Ngủ Ngon Hơn

Administrator

Đánh giá JLab Flow: Combo Chuột Bàn Phím Không Dây Giá Rẻ, Đáng Mua Cho Nhu Cầu Văn Phòng?

Administrator