2010-05-12 2 views
1

Я строю простую линейную диаграмму с matplotlib, и я бы хотел, чтобы зебра-полоса фона графика, так что каждая чередующаяся строка окрашена по-разному. Есть ли способ сделать это?matplotlib - зебра-полоса цвет фона фигуры?

В моей карте уже есть сетка и имеет только основные клещи.

Edit: Код из моего комментария ниже, но более разборчивый:

yTicks = ax.get_yticks()[:-1] 
xTicks = ax.get_xticks() 
ax.barh(yTicks, [max(xTicks)-min(xTicks)] * len(yTicks), 
    height=(yTicks[1]-yTicks[0]), left=min(xTicks), color=['w','#F0FFFF']) 

ответ

2

Вот быстрый Хак, который использует BarChart (axes.barh) для имитации чередования.

import matplotlib.pyplot as plt 

# initial plot 
fig = plt.figure() 
ax = fig.add_subplot(111) 
ax.plot([1,2,3,4,5]) 

yTickPos,_ = plt.yticks() 
yTickPos = yTickPos[:-1] #slice off the last as it is the top of the plot 
# create bars at yTickPos that are the length of our greatest xtick and have a height equal to our tick spacing 
ax.barh(yTickPos, [max(plt.xticks()[0])] * len(yTickPos), height=(yTickPos[1]-yTickPos[0]), color=['g','w']) 

plt.show() 

Производит:

alt text http://i42.tinypic.com/21lvqxf.png

+1

Спасибо! У меня возникли проблемы с работой, потому что моя ось х содержит даты, поэтому я изменил ее так: yTicks = ax.get_yticks() [: - 1] xTicks = ax.get_xticks() ax.barh (yTicks, [max (xTicks) -min (xTicks)] * len (yTicks), height = (yTicks [1] -yTicks [0]), left = min (xTicks), color = ['w ',' # F0FFFF ']) (обратите внимание, что есть новый left = arg и каждая ширина каждого штриха max (xticks) - min (xticks), а не только max (xticks).) – jbreed