Python中使用原始字符串为变量设置上标的问题
Python中使用原始字符串为变量设置上标的问题
嘿,这个问题我之前也踩过坑!核心原因是你没摸透Matplotlib里LaTeX格式的上标规则——当你的上标包含多个字符(比如负号加数字)时,必须用大括号{}把整个上标内容包裹起来,不然LaTeX只会把第一个字符当成上标,剩下的就变成普通文本了。
看你原来代码里的这行:
pyplot.plot(x1, x2, label=fr"x$^{-x}$")
LaTeX解析的时候,只会把-识别成上标,后面的数字(比如2、3)会被当成正常文本放在旁边,这就是为啥你看到负号在上标,数字却不在的原因。
给你个简单的解决办法,只需要修改图例的字符串就行:把整个上标内容用双大括号{{}}包裹(因为Python的f-string里单个大括号有特殊含义,需要转义)。修改后的完整代码如下:
import numpy import matplotlib.pyplot as plt s = [2, 3, 4, 5] for count, x in enumerate(s): x1 = numpy.linspace(0, 2) # 第一个图例也建议用大括号包裹,写法更规范 x2 = x1**x plt.plot(x1, x2, label=fr"$x^{{{x}}}$") # 关键修改:用{{}}把整个-x包裹起来,让LaTeX识别为完整上标 x2 = x1**(-x) plt.plot(x1, x2, label=fr"$x^{{{-x}}}$") plt.xlim(-0.1, 2) plt.ylim(-0.1, 3) plt.legend() plt.show()
解释下这个修改:fr"$x^{{{-x}}}$" 经过f-string解析后,会变成$x^{-2}$(当x=2时),LaTeX就能正确把-2整个当成上标显示了。
你运行这个修改后的代码,就能看到图例里的x^{-2}、x^{-3}等都完整显示成你想要的上标效果啦!
备注:内容来源于stack exchange,提问作者Overflowed with Maths
相关产品推荐
相关产品推荐

