2013-08-28 14 views
9

Khi vẽ đồ thị thanh lỗi, matplotlib không tuân theo rcParams không có kiểu dáng. Thay vào đó, nó vẽ tất cả các điểm được kết nối với một đường thẳng. Dưới đây là một ví dụ làm việc tối thiểu:Làm thế nào để bạn tạo một ô tử báo lỗi trong matplotlib bằng linestyle = None trong rcParams?

import matplotlib.pyplot as plt 

lines = {'linestyle': 'None'} 
plt.rc('lines', **lines) 

plt.errorbar((0, 1), (1, 0), yerr=(0.1, 0.1), marker='o') 

plt.savefig('test.pdf') 
plt.delaxes() 

enter image description here

là giải pháp duy nhất để thiết lập một cách rõ ràng linestyle='None' khi gọi pyplot.errorbar()?

Trả lời

24

Đây là lỗi "" trong các phiên bản cũ của matplotlib (và đã là fixed cho chuỗi 1.4). Vấn đề là trong Axes.errorbar có giá trị mặc định là '-' cho fmt, sau đó được chuyển đến cuộc gọi tới plot được sử dụng để vẽ các điểm đánh dấu và đường kẻ. Vì chuỗi định dạng được chuyển vào plot không bao giờ xem giá trị mặc định trong rcparams.

Bạn cũng có thể vượt qua trong fmt = ''

eb = plt.errorbar(x, y, yerr=.1, fmt='', color='b') 

mà sẽ làm cho giá trị rcParam['lines.linestlye'] để được tôn trọng. Tôi đã gửi PR để thực hiện việc này.

Một tác phẩm khác xung quanh việc này là để làm cho errorbar theo hai bước:

l0, = plt.plot(x,y, marker='o', color='b') 
eb = plt.errorbar(x, y, yerr=.1, fmt=None, color='b') 

Đây là một quyết định thiết kế gây phiền nhiễu, nhưng thay đổi nó sẽ là một đột phá api lớn. Vui lòng mở một vấn đề về github về việc này.

thanh lỗi doc.

Là một lưu ý phụ, có vẻ như chữ ký cuộc gọi được thay đổi lần cuối vào năm 2007 và điều đó là để làm cho thanh thông báo không mặc định thành màu xanh lam.

+0

Cảm ơn, tôi đã mở một sự cố: https://github.com/matplotlib/matplotlib/issues/2366 – drs