![](/img/trans.png)
[英]Bar plot in inset plot (matplotlib) has problems when adding text as labels?
[英]TypeError when adding text to matplotlib plot
我有一个 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)
我决定为这些坐标创建矩形,并使用plt.text
将 csv 文件中的“零件 ID”设置为它们的名称:
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
都是 arguments 到这个 function。
您使用过:
plt.text((df['X'][n], df['Y'][n]), 'ID: %s' % (z_n))
您已将 x, y 坐标作为元组(df['X'][n], df['Y'][n])
给出。 从它们周围删除括号,它应该可以正常工作:
plt.text(df['X'][n], df['Y'][n], 'ID: %s' % (z_n))
更好的是,为了确保您将正确的 arguments 提供给 function,您可以将 arguments 命名为:
plt.text(x=df['X'][n], y=df['Y'][n], s='ID: %s' % (z_n))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.