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

标签 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, 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'

我不知道如何在 python 脚本中实现 LateX 打字?


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

enter image description here

最佳答案

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)

我只是:

  1. {\sun} 替换为 \u2609,请参阅 How to do the astronomical symbol "\sun" in PyX .
  2. 将每个 LateX 的 { 加倍,因此 format 方法不会将其参数放入其中。
  3. 删除了字符串之前的 r,以便 \n 生效。

enter image description here

关于python-3.x - 如何使用 plt.text() 函数在 python3 生成的图中输入特殊符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39761510/

相关文章:

python - 文字冒险室运动

python - 如何在 python 中使用 selenium 将整个文本发送到文本区域而不是逐行发送?

Python 在每个异常上显示自定义错误消息/回溯

python - 如何在 Python/OpenCV 中将图像分割成干净的段落?

django - 使用 HttpResponse 下载文件对于大文件 (>5MB) 抛出错误 "body size is too long"

datetime - Python 绘图时间

python - 如何制作仅包含垂直线和水平线的 Python 图表?

python - 使用循环从列表创建子图。使数据绘制到两个子图上

python - 在文档中索引单词的最有效方法?

javascript - 替换以特定文本开头的元素的文本