2012-10-22 285 views
35

我有一个图形,根据matplotlib中绘制的某些数据计算得出。我想在此图的全局最大值周围绘制一个矩形区域。我试过plt.axhspan,,但是当我打电话给plt.show()如何在matplotlib图形中的特定区域绘制矩形

时,矩形似乎没有出现那么,矩形区域如何绘制到matplotlib图上呢?谢谢!

回答

45

最有可能的原因是您在调用axhspan时使用了x参数的数据单位。从the function's docs(我的强调):

ýCOORDS是在数据单元和X COORDS是在轴(相对0-1) 单元

因此,任何拉伸到左边0或右边1的矩形都是简单地绘制出来的。

一个简单的替代方案可能是将Rectangle添加到您的坐标轴(例如,通过plt.gcaadd_patch); Rectangle对这两个维度都使用数据单位。以下内容将添加一个灰色矩形,其宽度为&,高度为1,以(2,3)为中心:

from matplotlib.patches import Rectangle 
someX, someY = 2, 3 
currentAxis = plt.gca() 
currentAxis.add_patch(Rectangle((someX - .5, someY - .5), 1, 1, facecolor="grey"))