Hướng dẫn plt.legend python

Nếu nhìn vào các line graphs của các ví dụ ở các bài trước, chúng ta nhận ra rằng, chúng ta phải xem xét mã của chúng để hiểu chức năng được mô tả như thế nào. Thông tin này nên được nhúng sẵn trong graph để thuận tiện. Legends được sử dụng cho mục đích này. Từ này bắt nguồn từ tiếng Latinh và mean "to be read". Vì vậy, nó "has to be read" để hiểu được đồ thị.

Trước khi Legends được sử dụng trong đồ thị toán học, chúng đã được sử dụng trong bản đồ. Legends - như được tìm thấy trong bản đồ - mô tả hình ảnh ngôn ngữ hoặc biểu tượng của bản đồ. Các Legends được sử dụng trong biểu đồ đường để giải thích chức năng hoặc các giá trị nằm dưới các dòng khác nhau của đồ thị.

Chúng ta sẽ chứng minh trong ví dụ đơn giản sau đây làm thế nào chúng ta có thể đặt một Legends trên đồ thị. Một Legends chứa một hoặc nhiều mục. Mỗi mục bao gồm một khóa và một nhãn.

Hàm được định nghĩa trong pyplot như sau: legend(*args, **kwargs)

Tất cả những gì chúng ta phải làm để tạo ra một Legend cho các line, đã tồn tại trên các trục, là chỉ cần gọi hàm "legend" với một danh sách các chuỗi, mỗi chuỗi cho mỗi Legend. Ví dụ:

>>> import numpy as np

>>> import matplotlib.pyplot as plt

>>> ax = plt.gca()

>>> ax.plot([1, 2, 3, 4])

[]

>>> ax.plot([4,3,2,1])

[]

>>> ax.legend(['A simple line 1-4', 'A simple line 4-1'])



>>> plt.show()

Hướng dẫn plt.legend python

Nếu chúng ta thêm một nhãn vào hàm plot() , giá trị sẽ được sử dụng như nhãn trong lệnh legend(). Đối số duy nhất hàm legend() cần là đối số "loc" để chỉ rõ legend sẽ được đặt ở đâu. Cùng xem ví dụ sau:

>>> import numpy as np

>>> import matplotlib.pyplot as plt

>>> x = np.linspace(0, 25, 1000)

>>> y1 = np.sin(x)

>>> y2 = np.cos(x)

>>> plt.plot(x, y1, '-b', label='sine')

[]

>>> plt.plot(x, y2, '-r', label='cosine')

[]

>>> plt.legend(loc='upper left')



>>> plt.ylim(-1.5, 2.0)

(-1.5, 2.0)

>>> plt.show()

Hướng dẫn plt.legend python

Nhãn là một chuỗi các chuỗi và loc có thể là một chuỗi hoặc một số nguyên xác định vị trí legend.

Mã vị trí là:

'best'         : 0, (only implemented for axes legends)
'upper right'  : 1,
'upper left'   : 2,
'lower left'   : 3,
'lower right'  : 4,
'right'        : 5,
'center left'  : 6,
'center right' : 7,
'lower center' : 8,
'upper center' : 9,
'center'       : 10,
 

Các bạn nên thử lại ví dụ phía trên bằng cách thay đổi “upper left” trong đoạn mã plt.legend(loc='upper left') bằng các mã mà tôi đã liệt kê phía bên trên để thấy được sự thay đổi tương ứng của legend trên đồ thị.

Legend for Size of Points

Đôi khi các giá trị mặc định của legend không đáp ứng đủ cho việc hiển thị. Ví dụ: có lẽ bạn đang sử dụng kích thước điểm để đánh dấu các tính năng nhất định của dữ liệu và muốn tạo một legend phản ánh điều này. Dưới đây là một ví dụ mà chúng ta sẽ sử dụng kích thước của các điểm để chỉ ra các cụm dân số của các thành phố ở California. Chúng tôi muốn một legend chỉ định quy mô của các kích thước của các điểm và chúng tôi sẽ thực hiện việc này bằng cách vẽ một số dữ liệu được dán nhãn không có mục:

Bước 1: Tríc xuât dữ liệu.

>>> import pandas as pd

>>> import io

>>> import requests

>>> url="https://raw.githubusercontent.com/zekelabs/data-science-ml-foundation/master/data/california_cities.csv"

>>>

>>> s=requests.get(url).content

>>> cities = pd.read_csv(io.StringIO(s.decode('utf-8')))

>>> lat, lon = cities['latd'], cities['longd']

>>> population, area = cities['population_total'], cities['area_total_km2']

>>>

Bước 2: vẽ các điểm rời rạc (Scatter, sử dụng size and color và không cung cấp thông tin label.

>>> plt.scatter(lon, lat, label=None,c=np.log10(population), cmap='viridis',s=area, linewidth=0, alpha=0.5)



>>> plt.axis(aspect='equal')

(-124.74882780632679, -114.10411287726508, 32.104066521211607, 42.436501109774639)

>>> plt.xlabel('longitude')



>>> plt.ylabel('latitude')



>>> plt.colorbar(label='log$_{10}$(population)')



>>> plt.clim(3, 7)

>>>

Bước 3: Tại đây, chúng ta tạo ra một legend, chúng tôi sẽ vẽ các danh sách trống với kích thước và nhãn mong muốn.

>>> for area in [100, 300, 500]:
...     plt.scatter([], [], c='k', alpha=0.3, s=area,label=str(area) + ' km$^2$')
...



>>> plt.legend(scatterpoints=1, frameon=False, labelspacing=1, title='City Area')

>>> plt.title('California Cities: Area and Population');

>>> plt.show()
Hướng dẫn plt.legend python

Legend sẽ luôn đề cập đến một số đối tượng trên trong plot, vì vậy nếu chúng ta muốn hiển thị một hình dạng cụ thể, chúng ta cần vẽ ra nó. Trong trường hợp này, các đối tượng chúng ta muốn (các vòng màu xám) không nằm trong plot, vì vậy chúng tôi giả mạo chúng bằng cách vẽ ra các danh sách trống. Chú ý rằng các legend chỉ liệt kê các phần tử trong plot mà có một nhãn được chỉ định. Kĩ thuật giả mạo này giúp ta linh hoạt biểu diễn, chú thích cho đồ thị.

Multiple Legends

Đôi khi bạn muốn thêm nhiều legend vào cùng một trục trong thiết kế một plot. Thật không may, Matplotlib không làm điều này dễ dàng: thông qua giao diện truyền thống tiêu chuẩn, nó chỉ có thể tạo ra một legend duy nhất cho toàn bộ plot. Nếu bạn cố gắng tạo ra một legend thứ hai bằng cách sử dụng plt.legend () hoặc ax.legend (), nó sẽ chỉ đơn giản ghi đè lên cái đầu tiên. Chúng ta có thể làm việc này bằng cách tạo ra legend artist mới từ đầu, và sau đó sử dụng phương pháp ax.add_artist () cấp dưới để tự thêm legend thứ hai vào plot:

>>> fig, ax = plt.subplots()

>>>

>>> lines = []

>>> styles = ['-', '--', '-.', ':']

>>> x = np.linspace(0, 10, 1000)

>>> for i in range(4):

...     lines += ax.plot(x, np.sin(x - i * np.pi / 2),styles[i], color='black')

...

>>> ax.axis('equal')

(-0.5, 10.5, -1.1000000000000001, 1.1000000000000001)

>>> # specify the lines and labels of the first legend

... ax.legend(lines[:2], ['line A', 'line B'], loc='upper right', frameon=False)



>>> from matplotlib.legend import Legend

>>> leg = Legend(ax, lines[2:], ['line C', 'line D'],loc='lower right', frameon=False)

>>> ax.add_artist(leg);



>>> plt.show()

>>>

Hướng dẫn plt.legend python

Kết Luận

Legend như là một giải pháp một giải pháp hữu hiệu để giúp người đọc có thể phân biệt được các nhóm dữ liệu ( đường, điểm rời rạc, vv) trong đồ thị. Qua một loạt ví dụ bạn đọc có nhiều lựa chọn để chọn cũng như vị trí đặt Legend trên đồ thị.