Matplotlib: vẽ các đường lưới phía sau các phần tử đồ thị khác


124

Trong Matplotlib, tôi tạo các đường lưới đứt nét như sau:

fig = pylab.figure()    
ax = fig.add_subplot(1,1,1)
ax.yaxis.grid(color='gray', linestyle='dashed')

tuy nhiên, tôi không thể tìm ra cách (hoặc thậm chí nếu có thể) làm cho các đường lưới được vẽ đằng sau các phần tử đồ thị khác, chẳng hạn như các thanh. Việc thay đổi thứ tự thêm lưới so với thêm các phần tử khác không có gì khác biệt.

Có thể làm cho nó để các đường lưới xuất hiện đằng sau mọi thứ khác không?


10
ax.set_axisbelow(True)vẫn hoạt động. Ngoài ra tốt đẹp cho đầu ra pdf ...
bandgap

5
Tôi đã mong đợi ax.set_axisbelow(True)là mặc định ...
PatrickT

Câu trả lời:


122

Theo điều này - http://matplotlib.1069221.n5.nabble.com/axis-elements-and-zorder-td5346.html - bạn có thể sử dụngAxis.set_axisbelow(True)

(Tôi hiện đang cài đặt matplotlib lần đầu tiên, vì vậy không biết điều đó có chính xác không - tôi vừa tìm thấy nó bằng cách truy cập "matplotlib z order grid" - "z order" thường được sử dụng để mô tả loại thứ này (z là trục "ra khỏi trang"))


Có thể có đường lưới bên dưới thanh / dòng trong khi vẫn giữ các nhãn ở trên không? Tôi cũng đã đăng riêng quesiton này stackoverflow.com/questions/29522447/…
joelostblom

Nó có thể là matplotlib.1069221.n5.nabble.com/… này , mặc dù vậy.
Jacques Kvam

86

Đối với tôi, nó không rõ ràng về cách áp dụng câu trả lời của andrew cooke, vì vậy đây là một giải pháp hoàn chỉnh dựa trên điều đó:

ax.set_axisbelow(True)
ax.yaxis.grid(color='gray', linestyle='dashed')

34

Nếu bạn muốn xác thực cài đặt cho tất cả các số liệu, bạn có thể đặt

plt.rc('axes', axisbelow=True)

hoặc là

plt.rcParams['axes.axisbelow'] = True

Nó hoạt động cho Matplotlib> = 2.0.


8

Tôi đã gặp vấn đề tương tự và cách sau đã hoạt động:

[line.set_zorder(3) for line in ax.lines]
fig.show() # to update

Tăng 3lên giá trị cao hơn nếu nó không hoạt động.

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.