如何在Matplotlib图表的图例中正确显示π符号和带分数等内容?

1 投票
3 回答
128 浏览
提问于 2025-04-14 16:45

我用Matplotlib画了一个图,像这样:

现在,我是用 plt.legend(['pi(x)', 'x / log(x)']) 来创建图例的,其中 plt 是通过 import matplotlib.pyplot as plt 引入的。

我想知道怎么修改这个图例,让它:

  • 使用正确的π符号(希腊字母pi);

  • x / log(x) 显示成一个分数(让 x 在横线的上面,log(x) 在下面)?

3 个回答

-3

根据Grisma的建议进行编辑。

首先,希腊字母和其他非ASCII字符一样,可以被当作普通字符使用,所以它们可以用作字面量和标识符。因此,下面这两种写法在Python中都是有效的。

print("π")
π=1

其次,关于你的问题:在matplotlib中显示希腊字母和数学表达式,幸运的是,matplotlib的数学文本功能可能会很有帮助(这是一种轻量级的TeX表达方式)。

根据官方文档,所有希腊字母基本上可以通过在前后加上'$'来表示,这和使用LaTex的方法是一样的。

比如,对于圆周率Pi,根据符号部分,它应该写成'$\pi$'

fig = plt.figure()
fig.text(.2, .7, "$\pi$")

关于分数,可以参考这个部分

fig = plt.figure()
fig.text(.2, .7 , r'$\frac{x}{log(x)}$')

前面的r表示这是一个原始字符串,所以你不需要担心转义字符的问题。

-1

你可以在图例中使用LaTeX风格的符号。试着用-来改变图例的这一行。

plt.legend(['$\pi(x)$', '$\dfrac{x}{log(x)}$']) 

你的完整代码应该像这样-

import math
import matplotlib.pyplot as plt
import gmpy2
from grundfunktionen_working import *
import numpy as np

def pi(n):
    result = [None,]
    count = 0
    for h in range(1, n):
        if gmpy2.is_prime(h):
            count += 1
        result.append(count)
    return result

lim = 10**5

compare = [None,]
for h in range(2, lim+1):
    compare.append(h/math.log(h))


xachse = (list(range(lim // 5, lim+1, lim // 5)))
xachse.insert(0,1)
liste = pi(lim)
plt.plot(liste)
plt.plot(compare)
plt.xticks(xachse)
plt.legend(['$\pi(x)$', '$\dfrac{x}{log(x)}$']) # <--- change this line
plt.show()
exit()

我试过,得到了这个图片-

这里输入图片描述

希望这对你有帮助。

-1

如果你习惯用文字处理软件的话,可以用类似LaTeX的格式来写图例中的字符串。

需要注意的是,你几乎肯定需要使用原始字符串(因为里面有很多反斜杠\,它们看起来像是转义字符)。你可能会觉得用更大的字体会更好。

plt.legend( [ r'$\pi(x)$', r'$\dfrac{x}{log(x)}$' ] )

\dfrac这个版本似乎比\frac效果更好,因为后者会被压缩成行内公式。

它会显示成这样的效果:

在这里输入图片描述

撰写回答