TL; DR -> Làm cách nào để tạo một chú giải cho biểu đồ đường trong
Matplotlib
'sPyPlot
mà không tạo thêm bất kỳ biến nào?
Vui lòng xem xét kịch bản đồ thị dưới đây:
if __name__ == '__main__':
PyPlot.plot(total_lengths, sort_times_bubble, 'b-',
total_lengths, sort_times_ins, 'r-',
total_lengths, sort_times_merge_r, 'g+',
total_lengths, sort_times_merge_i, 'p-', )
PyPlot.title("Combined Statistics")
PyPlot.xlabel("Length of list (number)")
PyPlot.ylabel("Time taken (seconds)")
PyPlot.show()
Như bạn có thể thấy, đây là một sử dụng rất cơ bản của matplotlib
's PyPlot
. Điều này lý tưởng tạo ra một biểu đồ như dưới đây:
Không có gì đặc biệt, tôi biết. Tuy nhiên, không rõ dữ liệu nào đang được vẽ ở đâu (Tôi đang cố gắng vẽ dữ liệu của một số thuật toán sắp xếp, độ dài theo thời gian và tôi muốn chắc chắn rằng mọi người biết đó là dòng nào). Vì vậy, tôi cần một huyền thoại, tuy nhiên, hãy xem ví dụ sau đây ( từ trang web chính thức ):
ax = subplot(1,1,1)
p1, = ax.plot([1,2,3], label="line 1")
p2, = ax.plot([3,2,1], label="line 2")
p3, = ax.plot([2,3,1], label="line 3")
handles, labels = ax.get_legend_handles_labels()
# reverse the order
ax.legend(handles[::-1], labels[::-1])
# or sort them by labels
import operator
hl = sorted(zip(handles, labels),
key=operator.itemgetter(1))
handles2, labels2 = zip(*hl)
ax.legend(handles2, labels2)
Bạn sẽ thấy rằng tôi cần tạo thêm một biến ax
. Làm cách nào tôi có thể thêm một chú giải vào biểu đồ của mình mà không phải tạo thêm biến này và giữ lại sự đơn giản của tập lệnh hiện tại của tôi?
matplotlib
trước đây, tôi muốn giữ mọi thứ đơn giản nhất có thể. Ngoài ra, nếu bạn xem câu trả lời của Rob, nó đơn giản hơn nhiều so với ví dụ hiển thị trên trang web. Tôi hy vọng điều đó sẽ giúp.
import matplotlib.pyplot as plt
thay vìPyPlot