Dấu ấn huyền thoại matplotlib chỉ một lần


238

Tôi thường vẽ một điểm trên một âm mưu matplotlib với:

x = 10
y = 100
plot(x, y, "k*", label="Global Optimum")
legend()

Tuy nhiên, điều này khiến huyền thoại đưa một ngôi sao vào huyền thoại hai lần, sao cho nó trông giống như:

* * Global Optimum

khi tôi thực sự muốn nó trông giống như:

 *  Global Optimum

Làm thế nào để tôi làm điều này?


48
Tôi ước tôi có thể nâng cao câu hỏi này nhiều lần. Tôi ghét numpoints=2quy ước mặc định và cảm thấy nhẹ nhõm khi thấy ai đó đã dành thời gian để hỏi về nó và nhận được câu trả lời.
Chris Redford

24
Tâm trí: tùy chọn cho các biểu đồ phân tán làscatterpoints=1
Marcos Alex

Câu trả lời:


253

Điều này sẽ làm việc:

legend(numpoints=1)

BTW, nếu bạn thêm dòng

legend.numpoints     : 1      # the number of points in the legend line

vào tệp matplotlibrc của bạn, thì đây sẽ là mặc định mới.

[Xem thêm các điểm phân tán, tùy thuộc vào cốt truyện của bạn.]

API: Liên kết đến tài liệu API


7
Cảm ơn. Hôm nay tôi cũng chạy vào đây. Tại sao điều này không phải là mặc định?
saltycrane

Bạn có thể thêm một liên kết đến api? matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.legend Tôi chỉ có thể tự chỉnh sửa nó, nhưng điều đó có vẻ thô lỗ.
tacaswell

2
Có cách nào để giảm diện tích mà điểm trong truyền thuyết không?
Yotam

3
@DMS: Tôi đã không nhìn thấy điều đó. Lỗi của tôi. Bạn cũng nên làm nổi bật nó dưới dạng mã để làm cho nó rõ hơn.
Marcos Alex

2
Cuối cùng, có các kế hoạch cho numpoints = 1 được mặc định trong matplotlib 2.0! Huzzah! github.com/matplotlib/matplotlib/issues/4854
DanHickstein

25

Tôi muốn thay đổi động các tham số RC matplotlib của mình trong mỗi tập lệnh python. Để đạt được mục tiêu này, tôi chỉ cần sử dụng một cái gì đó như thế vào đầu tập tin python của tôi.

from pylab import *
rcParams['legend.numpoints'] = 1

Điều này sẽ áp dụng cho tất cả các lô được tạo từ tệp python của tôi.

EDIT: Đối với những người không thích nhập khẩu pylab, câu trả lời dài là

import matplotlib as mpl
mpl.rcParams['legend.numpoints'] = 1
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.