【问题标题】:How to use plt.text() function to type special symbols into a plot produced by python3?如何使用 plt.text() 函数在 python3 生成的图中键入特殊符号?
【发布时间】:2016-09-29 04:37:16
【问题描述】:

我正在尝试在 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 上运行此代码:

【问题讨论】:

    标签: python-3.x matplotlib text latex symbolic-math


    【解决方案1】:

    将您的 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,以便\ns 会影响。

    【讨论】:

    • 谢谢,这很有趣。
    • 我可以将文本 $kpc physical$ 设为斜体吗?
    • 谢谢,刚刚发现:${{kpc \/physical}}$
    • 嗨 Ophir,在 anaconda python 3.5 下运行相同的代码时,我收到以下错误消息: ValueError: h^{-1} M_\u2609 Expected {| ...|... |... |... |... |... |... |... |... |... |... |}(在字符 10 处) , (line: 1, col: 11) 我不确定是否需要一些软件包,因为 IT 人员在远程机器上只为我安装了 python。
    • 只有在我使用 python 2.7 时才会收到您的错误。使用 python 3.5.1 没有错误。
    猜你喜欢
    • 2020-02-07
    • 1970-01-01
    • 2011-09-12
    • 2017-08-24
    • 2014-08-03
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多