如何在Matplotlib图表的图例中正确显示π符号和带分数等内容?
我用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()
我试过,得到了这个图片-

希望这对你有帮助。