[英]Vertical alignment of matplotlib legend labels with LaTeX math
將具有下標的標簽與沒有它們的標簽混合時,它們不會在圖例中垂直對齊。 由於matplotlib在內部根據打印字符確定邊界框,因此使用vphantom
字符無法對齊這些圖例標簽,我也沒有運氣改變標簽與set_va
的垂直對齊方式。
下面是一個MWE,它說明了我試圖解決的問題。 我希望標簽盡可能與文本基線對齊,否則與文本頂部對齊。
import numpy as np
import matplotlib as mpl
mpl.rcParams['text.usetex'] = True
import matplotlib.pyplot as plt
x = np.arange(10)
plt.plot(x, np.random.uniform(size=(10,)), c='red', label=r'test')
plt.scatter(x, np.random.uniform(size=(10,)), c='blue', label=r'test${}_{xy}$')
plt.legend(ncol=2)
plt.show()
將text.latex.preview
參數設置為True
:
import numpy as np
import matplotlib as mpl
mpl.rcParams['text.usetex'] = True
mpl.rcParams['text.latex.preview'] = True
import matplotlib.pyplot as plt
x = np.arange(10)
plt.plot(x, np.random.uniform(size=(10,)), c='red', label=r'test')
plt.scatter(x, np.random.uniform(size=(10,)), c='blue', label=r'test${}_{xy}$')
plt.legend(ncol=2)
plt.show()
有關preview
參數的效果,請參閱此示例 。
您可以在Matplotlib圖例中查看文本對齊方式 。
或者您可以向下移動第二個圖例文字,
h_legend = plt.legend(ncol=2)
y_shift = -2.5
h_legend.texts[1].set_position((0, y_shift))
您可以使用以下內容基於圖例窗口的范圍來調整移位距離:
h_legend = plt.legend(ncol=2)
renderer = plt.gcf().canvas.get_renderer()
y_shift = -0.2*h_legend.texts[0].get_window_extent(renderer).height
h_legend.texts[1].set_position((0, y_shift))
這會將第二個文本移動整個圖例窗口高度的20%。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.