Matplotlib绘图中图例的标签对齐方式

4

我想创建一个图表,并将不同曲线的文本对齐在图例中。以下是一个最小化可行示例:

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,100)
plt.plot(x,np.sin(x),'-',label=r'1st, second, third, a$_b$')
plt.plot(x,np.cos(x),'--',label=r'fourth, 5th, 5$_{fo}$, sixth')
plt.legend()
plt.show()

我希望图例中的标签对齐,使其呈现类似以下的效果:
1st     second     third       a$_b$    
fourth  5th        5$_{fo}$    sixth

有没有一种方法可以做到这一点?

图表


是的,可能有一种方法。你尝试过什么? - DavidG
我搜索了很多,但还是没有找到任何东西... 类似于 LaTeX tabular 环境的东西可能是可行的吗? - Guiste
3
可能是matplotlib表格图例布局的重复问题。 - DavidG
我看了这个,但这不完全是我想要的,我认为。 - Guiste
@DavidG 如果这对解决方案真的有帮助,请在此处发布答案。我认为这将对许多遇到类似问题的人有所帮助。 - Guiste
1个回答

4

一种简单的选择是使用等宽字体,并用空格填充所需的空间。

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,100)
plt.plot(x,np.sin(x),'-', label='1st     second   third   a$_b$')
plt.plot(x,np.cos(x),'--',label='fourth  5th      5$_{fo}$      sixth')
plt.legend(prop={'family': 'DejaVu Sans Mono'})
plt.show()

enter image description here


好吧,这并不是我正在寻找的。我正在寻找一种自动化解决方案,我不想手动输入空格,也不想使用等宽字体(还想使用latex公式)。 - Guiste
上面的评论中有一个类似问题的链接,你可以适应其中的解决方案来解决你的问题。这里的答案只是为了展示一种快速而简单的方法,以防链接的答案实现起来过于复杂。 - ImportanceOfBeingErnest
如果您正在使用“rcParams”中的“text.usetex”,那么如何实现相同的效果呢? - TheoryX
例如,使用“annotate”不起作用... - sol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接