在matplotlib中向x y轴添加偏移量

时间:2014-01-07 12:04:41

标签: python matplotlib

我在django中写了一个视图,它发送pdf文件作为响应。 Pdf具有使用matplotlib完成日期的值的线图。该图看起来与此one非常相似。

如果我的最大y数据点为1000,那么图表会触及我不想要的顶部x轴。例如,请看这个图。

enter image description here

在(3.0,4.0)处,折线图接触顶部x轴。

我想为yaxis提供一些额外的空间(即将max-y读数增加到1100),以便我的图表看起来很好,如第一张图片所示。

我该怎么做?

from matplotlib.backends.backend_pdf import FigureCanvasPdf
from matplotlib.figure import Figure
from matplotlib.dates import DateFormatter
r_name  = request.GET.get('r_name')      
index_id = request.GET.get('index_id')
resp = api_views.historical_observations(request,index_id)      
data = resp.data.get('data')    
x,y=[],[] 
for datam in data:
    x.append(datam.get('measurement_date'))
    y.append(datam.get('value'))        
fig=Figure()
ax=fig.add_subplot(111)   
ax.set_title(r_name)
ax.plot_date(x, y, '-bo')    
ax.xaxis.set_major_formatter(DateFormatter('%Y-%m-%d'))    
fig.autofmt_xdate()
canvas=FigureCanvasPdf(fig)
response= HttpResponse(content_type='application/pdf')
filename = settings.PDF_FILE_PREFIX+"_"+r_name+"_"+request.GET.get('start_date')+"_" +\
            request.GET.get('end_date')+".pdf"
response['Content-Disposition'] = "attachment; filename="+filename
canvas.print_pdf(response)
return response

1 个答案:

答案 0 :(得分:3)

尝试:
ax.set_ymargin(0.1)(接受从0到1的浮动)

ax.set_ylim([min(y)-1, max(Y)+1])

将1改为使情节看起来很好的东西。这取决于你所绘制的规模。对于ylim,您可以通过乘以0.9 \ 1.1

进行百分比调整