2010-05-12 3 views
1

저는 matplotlib로 단순한 선 차트를 만들고 있는데, 차트의 배경을 제브라 스트라이프하여 각 번갈아가는 행이 다르게 색칠되도록하고 싶습니다. 이것을 할 수있는 방법이 있습니까?matplotlib - 얼룩말 - 그림의 배경색을 줄입니까?

내 차트에는 이미 그리드가 있으며 큰 눈금이 있습니다.

편집 : 아래 내 댓글에서 코드를하지만, 더 읽기 :

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

여기 스트라이핑을 시뮬레이션하기 위해 막대 그래프 (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

감사합니다! 내 x 축에 날짜가 포함되어 있기 때문에 처음에는 제대로 작동하지 못하게되어 약간의 어려움을 겪었으므로 나중에 변경했습니다. yTicks = ax.get_yticks() [: - 1] xTicks = ax.get_xticks() height = (yTicks [1] -yTicks [0]), left = min (xTicks), color = [ 'w (yTicks), yTicks, [max (xTicks) ','# F0FFFF ']) (새로운 left = arg가 있고 각 막대의 너비는 max (xticks)가 아니라 min (xticks) - min (xticks)입니다. – jbreed

관련 문제