![](/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.