【问题标题】:Combining a format string with a superscript and a subscript in pyplot when rendering text in a plot在绘图中渲染文本时在pyplot中将格式字符串与上标和下标组合
【发布时间】:2016-03-16 19:11:56
【问题描述】:

我想包含我使用 pyplot 创建的“幂律”曲线的方程。我尝试了以下代码的几种变体:

ax.text(0.1,0.9,r'{0:}x$^{1:}$'.format(A,b))

当然,文本渲染器使用大括号以及格式语句。我已经尝试将大括号加倍以拥有

ax.text(0.1,0.9,r'{0:}x$^{{1:}}$'.format(A,b))

甚至增加三倍

ax.text(0.1,0.9,r'{0:}x$^{{{1:}}}$'.format(A,b))

我也试过把文本分成两行

exponent = '{0:}$'.format(b)
ax.text(0.1,0.9,r'{0:}x$^'.format(A)+exponent)

这些对我或 pyplot 来说都没有真正意义,但我似乎无法提出正确的搜索问题来让它发挥作用。我找到了建议拆分行并使用双花括号的答案,但没有任何方法可以使这项工作。这可能吗?

编辑:

通过进一步的实验,我已经回答了上面的问题,这是我想放在情节中的方程的简化版本,所以让我稍微改变一下这个问题。为了做上面我想做的事情,我发现:

ax.text(0.1,0.9,r'{0:}x$^{{ {1:} }}$'.format(A,b))

有效。我不知道为什么我之前没有尝试过,但我现在有。问题是我实际上也想要 x 上的下标。鉴于上述工作我会认为:

ax.text(0.1,0.9,r'{0:}x$^{{ {1:} }}_{{\rm map}}$ 

可以,但我收到以下错误:

下标/上标序列太长。使用大括号 { } 删除 模棱两可。 (在字符 0 处),(行:1,列:1)

我看不到在哪里添加可以消除歧义的大括号。谁能告诉我我需要做什么?

【问题讨论】:

  • 你最后一行代码不完整。

标签: matplotlib format


【解决方案1】:

这行得通:

ax.text(0.1, 0.9, r'${0:}x^{{{1:}}}_{{\rm map}}$'.format(A, b))

问题在于您的 x 不在数学模式 ($...$) 范围内。

关于双花括号,有一个简单的解释:使用格式函数时,所有单花括号都与格式函数的参数匹配(它们也可以嵌套)。两个随后的花括号是 定义的在应用格式后获取一个花括号的方法。有关这方面的更多信息,请参阅documentation

【讨论】:

  • 这很有趣,我经常将变量保留在 $$ 之外,以避免需要 \rm,所以我没有尝试过。显然在这种情况下是必要的!
猜你喜欢
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 2021-09-09
  • 1970-01-01
  • 2021-08-10
  • 2016-11-07
  • 1970-01-01
  • 2020-07-03
相关资源
最近更新 更多