2015-12-04 37 views
4

我必須繪製一些數據和一些垂直線來劃定有趣的區間,然後我想添加一些標籤到使用text。我無法完全避免與數據或垂直線重疊的標籤,因此我決定在文本週圍放置一個bbox以保持其可讀性。我的問題是,我無法在此框中集中對齊,這在我看來清晰可見並且非常煩人。Matplotlib:它的bbox中的中心文本

我在做這樣的事情:

import numpy 
import matplotlib 
import matplotlib.pyplot as plt 

fig=plt.figure() 
plot=fig.add_subplot(111) 
x=numpy.linspace(1,10,50) 
y=numpy.random.random(50) 
plot.plot(x,y) 
plot.text(4.5,.5,'TEST TEST',\ 
      bbox={'facecolor':'white','alpha':1,'edgecolor':'none','pad':1}) 
plot.axvline(5,color='k',linestyle='solid') 
plt.show() 

它創建了以下情節: enter image description here

這是很明顯的,該文並沒有將其bbox中心。我該如何改變這一點?我在Google上呆了很長時間,但找不到任何東西。

編輯:

感謝迄今建議。

This暗示我所看到的實際上是理想的行爲。顯然bboxmatplotlib的新版本中的選擇是考慮到它包含的文本可能的最大下降('g'的下降)。

當「G」出現在文本,這確實好看: enter image description here 不幸地我沒有「G」或任何具有類似下降。有沒有人有任何進一步的想法?

+0

望着例如[這](http://stackoverflow.com/questions/17086847/box-around-text-in-matplotlib)的答案,它曾經在歷史上的某一點正常工作。但我得到了相同的結果,因爲你有,獨立於後端我使用 – Bart

+0

是的,這是我採取的建議,應該也許已經提到... – user35915

回答

2

使用文本屬性HA和VA:

plot.text(5.5,.5,'TEST TEST TEST TEST', 
      bbox={'facecolor':'white','alpha':1,'edgecolor':'none','pad':1}, 
      ha='center', va='center') 

要檢查,在圖的中心畫線:

plot.axvline(5.5,color='k',linestyle='solid') 
plot.axhline(0.5,color='k',linestyle='solid') 
+2

我也試過,但它並沒有改變任何東西我的情況.. – Bart

+2

也許這可以給提示:http://stackoverflow.com/questions/32167608/alignment-of-text-and-the-icon-in-the-legend-box-matplotlib – iMo51

+0

From [link]( http://matplotlib.org/users/text_props.html):「horizo​​ntalalignment控制文本的x位置參數是否指示文本邊界框的左側,中間或右側」。即ha和va只會影響'bbox'的位置,而不會影響文本在內部的排列方式。 – user35915