Plt.plot trong python

Matplotlib's plot có thể được sử dụng để vẽ biểu đồ line, scatter [xem ví dụ về scatter và line trong bài 1]. Các bạn sẽ nhận thấy plot vô cùng mạnh mẽ, linh hoạt và có thể sử dụng dữ liệu ở nhiều định dạng khác nhau cho phép tùy biến mỗi line trong graphs chỉ với một chuỗi định dạng đơn giản hoặc qua tập các đối số.

plot[*args, **kwargs] khi đó args là một đối số có độ dài thay đổi, cho phép nhiều cặp x, y với một chuỗi định dạng tùy chọn. kwargs có thể được dùng để thiết lập thuộc tính đường [bất kỳ thuộc tính nào có phương thức set_ *]. Bạn có thể sử dụng tính năng này để đặt tùy chỉnh độ rộng đường [linewidth], màu của markers, vv. Mặc định chúng sẽ được gán tự động bởi hệ thống.

Tham số định dạng của pyplot.plot là một string gồm các kí tự. Kí tự đầu tiên định nghĩa kiểu biểu diễn đường [line] hoặc kiểu biểu diễn rời rạc/tán xạ [scatter], trong khi đó kí tự thứ hai chọn màu cho đồ thị. Vị trí của các kí tự có tính chất giao hoán, tức là ta có thể hoán đổi vị trí cho nhau.

Khi ta không chỉ định chuỗi định dạng thì nó sẽ nhận giá trị “-b”.

Các ký tự chuỗi định dạng sau đây được chấp nhận để tùy chỉnh kiểu đường thẳng [được bôi đỏ] hoặc điểm đánh dấu [được bôi đen].

character

description

character

Description

'-'

solid line style

'3'

tri_left marker

'--'

dashed line style

'4'

tri_right marker

'-.'

dash-dot line style

's'

square marker

':'

dotted line style

'p'

pentagon marker

'.'

point marker

'*'

star marker

','

pixel marker

'h'

hexagon1 marker

'o'

circle marker

'H'

hexagon2 marker

'v'

triangle_down marker

'+'

plus marker

'^'

triangle_up marker

'x'

x marker

''

triangle_right marker

'd'

thin_diamond marker

'1'

tri_down marker

'|'

vline marker

'2'

tri_up marker

'_'

hline marker

Màu sắc sẽ theo quy tắc sau:

color

character

color

'b'

blue

'm'

magenta

'g'

green

'y'

yellow

'r'

red

'k'

black

'c'

cyan

'w'

white

Ví dụ.

Dùng plot[] vẽ line graph kết hợp với scatter để biểu diễn dữ liệu thời tiết trong 8 ngày.

Import và khởi tạo dữ liệu:

>>> import matplotlib.pyplot as plt

>>> days = list[range[1,9]]

>>> celsius_values = [25.6, 24.1, 26.7, 28.3, 27.5, 30.5, 32.8, 33.1]

Ta dùng chuỗi ‘--r’ để vẽ line graph, và ‘sr’ để vẽ các điểm rời rạc.

>>> import matplotlib.pyplot as plt

>>> days = list[range[1,9]]

>>> celsius_values = [25.6, 24.1, 26.7, 28.3, 27.5, 30.5, 32.8, 33.1]

>>> plt.plot[days, celsius_values,'--r']

[]

>>> plt.plot[days,celsius_values, 'sr']

[]

>>> plt.show[]

>>>

Bạn nhận thấy trong ví dụ trên tôi đã dùng tới hai lần gọi plot[], tuy nhiên với cùng một yêu cầu như trên điều đó là không cần thiết. Thay vào đó ta dùng định dạng

“--sr” cũng cho ta kết quả tương tự.

>>> plt.plot[days,celsius_values, '--sr']

[]

>>> plt.show[]

‘r’ để thể hiện màu, ‘--‘ để vẽ line graph, còn ‘s’ để vẽ các đánh dấu rời rạc hình vuông trên hình vẽ.

Sử dụng tập đối số để tùy biến graph. Một số thuộc tính line2D hữu ích sau:

‘color’,  ‘linewidth’ hoặc ‘lw’, ‘marker’, ‘linestyle’ or ‘ls’, ‘markeredgewidth’.

Ta có thể dùng kết hợp với chuỗi định dạng hoặc chỉ sử dụng đối số phía trên để tùy biến cho đồ thị.

Làm lại ví dụ phía trên và tăng kích thước line và makers với cách này.

>>> plt.plot[days,celsius_values,color = 'r', ls = '--', marker = 's', lw = 5, markeredgewidth = 10]

[]

>>> plt.show[]

Sự mạnh mẽ của plot[] còn thể hiện bởi khả năng hỗ trợ vẽ cùng lúc nhiều dữ liệu với tùy chỉnh riêng cho từng nhóm chỉ trong một lần plot.

Trong ví dụ sau tôi sẽ vẽ 3 đường để biểu diễn sự biến thiên nhiệt độ trong ngày và nhiệt độ trung bình. Các bạn sẽ nhận thấy đường nét đứt màu đỏ để vẽ đường max, đường nét đứt màu xanh để biểu diễn min, và đường đậm đen ở giữa để biểu diễn nhiệt độ trung bình.

>>> import matplotlib.pyplot as plt

>>> import numpy as np

>>> days = list[range[1,9]]

>>> celsius_min = [19.6, 24.1, 26.7, 28.3, 27.5, 30.5, 32.8, 33.1]

>>> celsius_max = [24.8, 28.9, 31.3, 33.0, 34.9, 35.6, 38.4, 39.2]

>>> celsilus_avg =  map[lambda x: np.average[x],zip[celsius_min,celsius_max]]

>>> plt.plot[days, celsius_min,"b--s",days, celsius_max, "r--s",days,celsilus_avg,"o-k"]

>>> plt.show[]

Ngoài cách sử dụng plt.plot[] để vẽ scatter graph như đã đề cập phía trên, chúng ta còn một lựa chọn khác sử dụng plt.scatter[]. Cú pháp hàm.

matplotlib.pyplot.scatter[x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, hold=None, data=None, **kwargs]

Các bạn có thể tham khảo thêm website: //matplotlib.org/api/_as_gen/matplotlib.pyplot.scatter.html để biết thêm thông tin về ý nghĩa của từng đối số.

Điểm lợi thế khi dùng phương thức này là giúp ta có thể biểu diễn nhanh các điểm rời rạc với kích thước và màu thay đổi. Ví dụ sau sẽ miêu tả tiện lợi này.

>>> import matplotlib.pyplot as plt

>>> import numpy as np

>>> x = rng.randn[100]

>>> y = rng.randn[100]

>>> colors = rng.rand[100]

>>> sizes = 1000 * rng.rand[100]

>>> plt.scatter[x, y, c=colors, s=sizes, alpha=0.5,cmap='viridis']



>>> plt.colorbar[];  # show color scale



>>> plt.show[]

>>>

Kết Luận

Trong bài học này chúng ta đã cùng nhau tìm hiểu hai phương thức để vẽ đồ thị line và scatter là plot[] và scatter[] cùng với một số kí tự chuỗi định dạng để tùy chỉnh kiểu đường thẳng, điểm đánh dấu và màu sắc. Trong bài tiếp theo chúng ta sẽ học được cách làm việc với nhiều plot trong một đồ thị.

Chủ Đề