Giả sử mình có tập dữ liệu được tạo ra ngẫu nhiên từ hàm random
của thư viện numpy
, bây giờ mình muốn dùng biểu đồ để thể hiện dữ liệu đó dưới dạng đồ họa với mục đích đánh giá dữ liệu dễ dàng hơn bằng thư viện matplotlib
, mình newbie nên chưa biết nhiều cú pháp của matplotlib
, bạn nào sử dụng qua rồi có thể ví dụ vài trường hợp không ạ?
Rất đơn giản, bạn có thể sử dụng mô-đun vẽ đồ thị pylot
của matplotlib để biểu diễn bất cứ dữ liệu nào bạn muốn, tất cả tài liệu ví dụ đều có đầy đủ trên trang chủ matplotlib bạn nên tham khảo,
Cơ bản khi sử dụng pylot
là bạn cần cung cấp tọa độ các điểm x và y tương tự như trong đồ thị Oxy, ví dụ dữ liệu bạn random từ thư viện numpy thì xem đó là dữ liệu của trục Oy, muốn vẽ được trên pylot
bạn sẽ phải tạo thêm cột dữ liệu của trục Ox nữa, sử dụng hàm range()
trong Python rất dễ dàng,
import numpy as np
import matplotlib.pyplot as plt
# Tạo ngẫu nhiên dữ liệu theo phân phối chuẩn
data_random = np.random.randn(100)
# Tạo trục Ox,
# Dữ liệu trên trục Ox = dữ liệu trên trục Oy
ox = range(len(data_random))
oy = data_random
# Vẽ đồ thị
plt.plot(ox, oy)
plt.title(u"Dữ liệu được tạo ngẫu nhiên theo phân phối chuẩn")
plt.show()
Kết quả hiển thị,
Một số đồ thị khác bạn có thể tham khảo,
Đồ thị hàm Sin
import numpy as np
import matplotlib.pyplot as plt
ox = np.arange(0, 10, 0.2);
oy = np.sin(ox)
plt.plot(ox, oy)
plt.title(u'Đồ thị hàm Sin')
plt.show()
Kết quả hiển thị,
Đồ thị hình Sin dạng điểm
Tương tự như trên, thay đoạn mã nguồn plt.plot(ox, oy)
thành plt.plot(ox, oy, 'o')
,
Đồ thị 3D của hàm số $x^2 + y^2$
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
ox = np.arange(-5, 5, 0.25)
oy = np.arange(-5, 5, 0.25)
ox, oy = np.meshgrid(ox, oy)
oz = ox**2 + oy**2 # Hàm số z = x^2 + y^2
fig = plt.figure()
graph = Axes3D(fig)
graph.plot_surface(ox, oy, oz, cmap=cm.magma)
plt.show()
Kết quả hiển thị,
Hope it help :))