Pyplot填充区域在线下方

时间:2015-08-02 01:46:13

标签: python matplotlib

我想使用pyplot填充简单折线图下面的区域。我知道" fill_between",但我无法将其用于我的代码,主要是因为我无法定义x和y,如

fill_between(x,y)

我的代码的线图部分如下所示。我也认为我的ax.set_xtick标签效率很低,因此任何提示都会受到赞赏。

N = 31
ind = np.arange(N)

fig, ax = plt.subplots(facecolor='white')

ax.line = plot(days_len) #this is a list of 31 numbers e.g. 31,876, one for each day of July

ax.set_ylabel('Rides', fontsize = 22)
ax.set_xlabel('Day', fontsize = 22)
ax.set_xticks(ind)
ax.set_yticks(np.arange(0,50000,5000))
ax.set_xticklabels(('01', '02', '03', '04', '05', '06', '07', 
'08','09','10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20',
'21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31'))

#for chart styling purposes
ax.spines["top"].set_visible(False)
ax.spines["right"].set_visible(False)
ax.spines["left"].set_color('red')
ax.spines["bottom"].set_color('red')

#returns only ticks for bottom and left of x and y axes
ax.get_xaxis().tick_bottom()  
ax.get_yaxis().tick_left()
ax.set_yticks(ax.get_yticks()[1:]) #to remove "0" at origin of y-axis

axes(ax).yaxis.grid(True, color='red') #just y-axis gridlines 

提前感谢您的任何帮助。

1 个答案:

答案 0 :(得分:0)

对于fill_betweenx是您希望填充的x值集合。 y1y2是您要填充的曲线。默认情况下,y2是x轴。由于您正在绘制31个值,因此只需使用range(31)作为x

ax.fill_between(range(31), days_len)

对于ticklabels,我会使用range生成数字,然后使用列表推导将它们转换为字符串(使用zfill字符串方法添加前导零)。

ticklabels = [str(date).zfill(2) for date in range(1, 32)]
ax.set_xticklabels(ticklabels)