OSError: [Errno 22] 无效参数:尝试 plt.savefig 时



我遇到了一个错误,我不太清楚问题是什么以及为什么会出现此错误。在我的脚本中,我让用户输入一个文本文件,并从该文本文件创建一个数据表。我单独提取并保存了数据表的一列(我已经"加粗"了导致错误的输入以使其更容易(。

**File_Names=[]**
print('Enter name of peaklist files. When finished, type done and enter to stop.')
while True:
Titration_file_input = input()
if Titration_file_input.lower() not in ['done']:
Titration_files.append(Titration_file_input)
else:
break
for Data in Titration_files:
try:
Titration_Datatable = pd.read_csv(Data, sep='s+', header=None)
Titration_Datatable.columns=['Column_1','Column_2','Column_3', 'Column_4', 'Column_5']
Data_Table.append(Titration_Datatable)
except:
print('File' + ' ' + Data + ' ' + 'not found')

for Titration_Datatable in Data_Table:
Peak_Height.append(Titration_Datatable.loc[:,'Column_4'])
**File_Names.append(Titration_Datatable.loc[:,'Column_1'].drop([0],axis=0).drop([1],axis=0))**

然后,我稍后调用它以用作生成的图形的保存文件的标题。

for values,i in zip(Titration_Data,File_Names):
Intensity=[values]
Intensity_Array=np.array(Intensity)
y=Intensity_Array.flatten()
popt, pcov = curve_fit(fun, x, y)
kD.append(popt)
fun_data=fun(x,*popt)
output_for_graphing.append(fun_data)
residuals=y-fun(x, popt)
ss_res=np.sum(residuals**2)
ss_tot=np.sum((y-np.mean(y))**2)
r_squared=1-(ss_res/ss_tot)
r2.append(r_squared)
std = np.sqrt(np.diag(pcov))
standard_deviation.append(std)
plt.plot(x, y, label='data')
plt.plot(x, fun(x, *popt), label='fitted')
plt.xlabel('Ligand Concentration')
plt.ylabel('Intensity')
plt.title([i])
plt.grid()
plt.legend()
**files_to_save=str([i])+'.png'
plt.savefig(files_to_save)**
plt.show()

我得到的错误是这样的:

plt.savefig(files_to_save)
OSError: [Errno 22] Invalid argument: '[2    1XH-HNn3    2XH-HNn4    3XN-HNn5    4XN-HNn6    5XN-HNn7    6XN-HNn8    7XN-HNn9    8XN-HNnName: Column_1, dtype: object].png'

我想也许这是一个格式问题,也许如果我把它变成一个列表或数组,它会起作用。但是当我将其更改为数组时,这是我得到的错误:

plt.savefig(files_to_save)
OSError: [Errno 22] Invalid argument: "[array(['1XH-HN', '2XH-HN', '3XN-HN', '4XN-HN', '5XN-HN', '6XN-HN',n       '7XN-HN', '8XN-HN'], dtype=object)].png"

在这一点上,我不知道为什么我会收到格式错误。我唯一能想到的是 plt.savefig 不接受连字符,还是它无法读取它们(例如,只需要定义正在使用的编码(?提前谢谢你!

您正在尝试保存一个名为

[2 1XH-HN3 2XH-HN4 3XN-HN5 4XN-HN6 5XN-HN7 6XN-HN8 7XN-HN9 8XN-HNName: Column_1, dtype: object].png

不能保存带有方括号、反斜杠和冒号的文件。str[i]返回一个文件名列表,这就是你出错的地方。也许尝试

for ix, (values,i) in enumerate(zip(Titration_Data,File_Names)):
# etc

然后,您将能够使用数字str[ix]进行索引。我认为你用错zip。下面是它如何工作的简单示例:

a = [1, 2, 3, 4]
b = [5, 6, 7, 8]
for ix, (i, ii) in enumerate(zip(a, b)):
print('ix:', ix, 'i:', i, 'ii:', ii)
ix: 0 i: 1 ii: 5
ix: 1 i: 2 ii: 6
ix: 2 i: 3 ii: 7
ix: 3 i: 4 ii: 8

相关内容

最新更新