You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matplotlib中ax.text变量不显示及语法错误问题求助

问题排查与解决

错误原因拆解

  1. SyntaxError: positional argument follows keyword argument:这是Python基础语法错误,和Matplotlib无关——你调用ax.text()时,把位置参数(比如文本内容)放在了关键字参数(fontsize/color这类带=的参数)之后,Python要求位置参数必须排在关键字参数前面。
  2. 文本未解析{}:说明你没有真正完成字符串格式化操作,要么是格式化代码写错,要么是把带{}的原字符串直接传给了ax.text,没执行替换逻辑。

正确代码示例

假设要展示的变量为accuracy = 92.5,三种格式化方法的正确写法如下:

f-string写法

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
accuracy = 92.5
# 严格遵循:位置参数(x坐标, y坐标, 格式化后的文本)在前,关键字参数在后
ax.text(0.5, 0.5, f"准确率: {accuracy}%", fontsize=12, ha='center')
plt.show()

.format()写法

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
accuracy = 92.5
# 先完成格式化得到最终字符串,再传入ax.text
text_content = "准确率: {}%".format(accuracy)
ax.text(0.5, 0.5, text_content, fontsize=12, ha='center')
plt.show()

%格式化写法

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
accuracy = 92.5
# 注意%%是转义显示百分号
text_content = "准确率: %.1f%%" % accuracy
ax.text(0.5, 0.5, text_content, fontsize=12, ha='center')
plt.show()

你可能踩的坑(错误写法示例)

# 错误1:位置参数(文本)放在关键字参数之后,直接触发语法错误
ax.text(0.5, 0.5, fontsize=12, f"准确率: {accuracy}%")

# 错误2:未执行格式化,把变量当成额外位置参数传入,文本显示未解析的{}
ax.text(0.5, 0.5, "准确率: {}%", accuracy, fontsize=12)

验证步骤

先单独格式化字符串并打印,确认输出符合预期后,再将该字符串作为ax.text的第三个位置参数传入,同时确保所有位置参数(x、y、文本)都在关键字参数之前。

内容的提问来源于stack exchange,提问作者Luca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 07:33:20