Người dùng matplotlib mới tại đây. Tôi đang cố vẽ một dòng dữ liệu được mã hóa màu hoặc tốt hơn, một dải dữ liệu được mã hóa màu. Khoảng mã hóa màu dọc theo trục y. Tập lệnh trình diễn thô sau:Matplotlib - lưới và vẽ đồ thị các giá trị y/giá trị mã hóa màu
import matplotlib.pyplot as plt
# dummy test data
datapoints = 25
maxtemps = [ 25, 24, 24, 25, 26, 27, 22, 21, 22, 19, 17, 14, 13, 12, 11, 12, 11, 10, 9, 9, 9, 8, 9, 9, 8 ]
mintemps = [ 21, 22, 22, 22, 23, 24, 18, 17, 16, 14, 10, 8, 8, 7, 7, 6, 5, 5, 5, 4, 4, 4, 3, 4, 3 ]
times = list(xrange(datapoints))
# cap a filled plot at a given level
def capped(indata, cap):
outdata = [0] * datapoints
lcount = 0
while lcount < datapoints:
if indata[lcount] > cap:
outdata[lcount] = cap
else:
outdata[lcount] = indata[lcount]
lcount += 1
return outdata
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.fill_between(times, 0, maxtemps, color='#FF69B4', zorder=1, linewidth=0.1)
ax1.fill_between(times, 0, capped(maxtemps,25), color='#F08228', zorder=2, linewidth=0.1)
ax1.fill_between(times, 0, capped(maxtemps,20), color='#E6AF2D', zorder=3, linewidth=0.1)
ax1.fill_between(times, 0, capped(maxtemps,15), color='#E6DC32', zorder=4, linewidth=0.1)
ax1.fill_between(times, 0, capped(maxtemps,10), color='#A0E632', zorder=5, linewidth=0.1)
ax1.fill_between(times, 0, capped(maxtemps,5), color='#00DC00', zorder=6, linewidth=0.1)
ax1.fill_between(times, 0, mintemps, color='#FFFFFF', zorder=7, linewidth=0.1)
plt.setp(ax1.get_xticklabels(), visible=False)
ax1.grid(True, zorder=8)
ylim(0)
plt.draw()
plt.show()
Có hầu hết công việc nhưng nó đặt ra hai câu hỏi.
Có cách nào khác, trực tiếp, thanh lịch để đạt được hiệu ứng tương tự này với tính năng matplotlib mà tôi không biết? Đó là hoặc vẽ một mảng 1D dữ liệu chuỗi thời gian (nói) hoặc để minh họa một phạm vi giữa hai bộ dữ liệu đó (ví dụ, nhiệt độ tối đa, tối thiểu)?
Hãy thử làm như tôi có thể, tôi không thể thuyết phục các đường lưới được vẽ trên đầu hình. Họ luôn luôn dường như ngồi trên đầu trang của bộ đầu tiên của dữ liệu được vẽ và sau đó được chôn cất bởi dữ liệu được vẽ theo sau, để lại nửa dưới của ô trống. Sử dụng zorder dường như bị bỏ qua.
Rất cám ơn.