Python 3.x 如何使用plt.text()函数在python3生成的绘图中键入特殊符号?

Python 3.x 如何使用plt.text()函数在python3生成的绘图中键入特殊符号?,python-3.x,matplotlib,text,latex,symbolic-math,Python 3.x,Matplotlib,Text,Latex,Symbolic Math,我试图在python脚本中的一个空图形中键入一个文本(其中包括一些天体物理符号,如太阳质量和哈勃参数): import numpy as np import matplotlib.pyplot as plt plt.figure(4) frame = plt.gca() frame.axes.get_xaxis().set_ticks([]) frame.axes.get_yaxis().set_ticks([]) A = 2 B = 2 C = 3 D = 4 plt.text(0.05,

我试图在python脚本中的一个空图形中键入一个文本(其中包括一些天体物理符号,如太阳质量和哈勃参数):

import numpy as np
import matplotlib.pyplot as plt

plt.figure(4)
frame = plt.gca()
frame.axes.get_xaxis().set_ticks([])
frame.axes.get_yaxis().set_ticks([])
A = 2
B = 2
C = 3
D = 4 
plt.text(0.05, 0.05, r'$R_{200m}$={:.0f} kpc physical \n\n $M_{200m}$={:.3e} $h^{-1} M_{\sun}$ \n\n\n\n x={:.0f} \n\n $M_{DM}$={:.3e} $h^{-1} M_{\odot}$'.format(A, B, C, D), size=20)
plt.show()
使用
python3 example.py运行脚本后,我收到以下错误消息:

  File "exam.py", line 12, in <module>
      plt.text(0.05, 0.05, r'$R_{200m}$={:.0f} kpc physical \n\n $M_{200m}$={:.3e} $h^{-1} M_{\sun}$ \n\n\n\n x={:.0f} \n\n
  $M_{DM}$={:.3e} $h^{-1} M_{\odot}$'.format(A, B, C, D), size=20) 
  KeyError: '200m'
文件“exam.py”,第12行,在
plt.text(0.05,0.05,r'$r{200m}$={.0f}kpc物理\n\n$M{200m}$={.3e}$h^{-1}M{\sun}$\n\n\n x={.0f}\n\n
$M{DM}$={.3e}$h^{-1}M{\odot}$'.格式(A,B,C,D),大小=20)
键错误:“200米”
我不知道如何在python脚本中实现LateX打字


附件是运行代码时错误消息的快照,我使用的格式与答案中建议的格式相同。我在只安装了python3.5的anaconda上运行此代码:


将您的
plt.text…
行替换为以下内容:

plt.text(0.05, 0.05, '$R_{{200m}}$={:.0f} kpc physical \n\n $M_{{200m}}$={:.3e} $h^{{-1}} M_\u2609$ \n\n\n\n x={:.0f} \n\n $M_{{DM}}$={:.3e} $h^{{-1}} M_{{\odot}}$'.format(A, B, C, D), size=20)
我只是:

  • {\sun}
    替换为
    \u2609
    ,请参阅
  • 将每个LateX方法的
    {
    增加一倍,因此
    格式
    方法不会将其参数放入其中
  • 删除字符串前面的
    r
    ,以便
    \n
    s将影响

  • 谢谢,这很有趣。我能把文本$kpc physical$改成斜体吗?谢谢,刚刚计算出来:${{kpc\/physical}$$Hi Ophir,在anaconda python 3.5下运行相同的代码时,我收到以下错误消息:ValueError:h^{-1}M_20609预期的{124;…|…|…|…|…|…|…|…|…|…|…|(在char 10),(第1行,第11列)我不确定是否需要一些软件包,因为远程机器上的IT人员只为我安装了python。只有在我使用python 2.7时,我才会收到您的错误。对于python 3.5.1,没有错误。