這是不幸的是,這個bug已經存在了這麼久,而且大多數的答案想到這裏的問題是關於水平對齊而不是垂直間距。
The bug是已知的,並且有一個補丁可以修復它,但它並未被合併,只是被列爲需要在過去的一年半中進行審查。
有趣的是,這是相當混亂的錯誤。這個問題最初出現的原因在於,出於某種原因,TeX給出了一個減號(和其他數學符號)的下降值,表明它延伸到了基線以下。用於在柵格後端創建標籤的dvipng只是裁剪可見的,所以這沒關係。但爲了保持實際上具有後代的對齊,matplotlib有一個單獨的系統dviread,它從dvi文件本身讀取值。這會帶來奇怪的下降值。然後matplotlib的對齊系統,認爲PNG的一部分是假設低於基線,將其下移。
修復bug報告非常簡單,但我不完全確定它是如何工作的。我試過了,但是,它確實有效。
當然,這個問題在2013年被問到了,所以看起來這個補丁不會很快適用。那麼有什麼選擇?
一個簡單的方法是在工作時忽略對齊問題,但是在執行演示輸出時使用pdf後端。如果你想要圖像,你可以隨時使用其他軟件進行轉換。 pdf後端不會遇到同樣的問題,因爲它完全不同地處理TeX部分。
另一種選擇是調整消極xticks的位置。從理論上講,你可以從_get_layout中調出確切的調整值,這會給你下降值,但我不確定如何轉換值。因此,這裏的只是虎視眈眈的對齊的示例:
import numpy as np
import matplotlib.pyplot as plt
t = np.linspace(-10.0, 10.0, 100)
s = np.cos(t)
i = [-10,-5,0,5,10]
plt.rc('text', usetex=True)
plt.rc('font', family='serif', size=30)
plt.plot(t, s)
for n,l in zip(*plt.xticks()):
if n<0: l.set_position((0,0.014))
來源
2017-09-08 18:00:44
cge
有沒有簡單的方法來實現這一目標,因爲文本與'dvipng'外部處理,並將得到的圖像插入圖形。這些沒有任何空白。你必須做的是將xtick標籤對齊設置爲'右',然後向右移位。但我無法得到這個額外的轉變工作。 – Christoph
問題在於如何從PS邊界框中推斷文本的輪廓。它是對齊的大綱框,而不是文本本身。我想你必須深入挖掘才能改變這種行爲。 – mdurant
不努力「過度工程」你的陰謀,他們已經整齊。 –