python - 将文本添加到 matplotlib 图中时出现 TypeError
问题描述
我有一个 csv 文件,其中显示了一些电子零件的一些参考及其坐标:
我一直在使用matplotlib.pyplot
,matplotlib.patches
和为这些参考绘制矩形Rectangle
:
import matplotlib.pyplot as plt
import matplotlib.patches as patches
from patches import Rectangle
fig = plt.figure()
ax = fig.add_subplot(111)
我决定为这些坐标创建矩形,并使用 csv 文件将它们的“零件 ID”设置为它们的名称plt.text
:
n=0
for n in range(30):
z = df['Part ID'][n]
rect_n = patches.Rectangle((df['X'][n], df['Y'][n]), 200, 300, fill = False)
(我随机选择了 200 作为宽度和 300 作为高度。不要介意。)
for n in range(30):
z_n = df['Part ID'][n]
rect_n = patches.Rectangle((df['X'][n], df['Y'][n]), 200, 300, fill = False)
ax.add_patch(rect_n)
plt.text((df['X'][n], df['Y'][n]), 'ID: %s' % (z_n))
df.plot(kind='scatter', x='X', y='Y', ax=ax)
ax.set_axisbelow(True)
ax.grid(linestyle='-', linewidth='2', color='g')
在行中plt.text
,我尝试使用 csv 文件中的部件 ID 命名矩形。我创建了一个变量z
并将名称设置z
为字符串。确切的问题从这里开始:
当我开始运行程序时,所有代码都可以正常工作,而无需将它们命名为 Part ID。
在这幅画之后,我决定添加plt.text
行来命名它们。
但我得到错误:TypeError: text() missing 1 required positional argument: 's'
中的字符串分配存在问题plt.text(.....%s)
。有没有人知道该怎么做?
我怎样才能给他们每个人分配他们的零件 ID 名称?
解决方案
调用签名为plt.text
:
plt.text(x, y, s, ...)
请注意x
,y
、 和s
都是此函数的参数。
您使用过:
plt.text((df['X'][n], df['Y'][n]), 'ID: %s' % (z_n))
您将 x, y 坐标作为 tuple 给出的位置(df['X'][n], df['Y'][n])
。从它们周围删除括号,它应该可以正常工作:
plt.text(df['X'][n], df['Y'][n], 'ID: %s' % (z_n))
更好的是,为了确保为函数提供正确的参数,您可以命名参数:
plt.text(x=df['X'][n], y=df['Y'][n], s='ID: %s' % (z_n))
推荐阅读
- pyspark - 计算各行的总数并将其带到下一行
- javascript - 从Angular中的剑道文本区域复制到剪贴板
- excel - 在数据透视表中识别日期的问题
- c - 为什么输出值会消失?
- python - Python嵌套while循环,c ++中的不同输出
- c++ - 多字节字符串文字到 wostringstream
- c# - 单行上的 ConfigureAwait(false)
- visual-studio-code - 如何阻止 vscode 去缩进我的乳胶项目?
- python - 如何编辑列表中的字符串/网址?
- html - 移动视图html css中的文本重叠-尝试其他查询的解决方案无济于事