我有一个python(v2.7.14)程序来读取目录中的所有文件,然后在一个图上绘制这些文件中的某些数据列。我还使用plt.text()标记每个相应的行,使用最后的x值和每个数据集中的第10个到最后的y值。只要我使用子程序来提示要读取哪个目录,这一切都有效,但是如果我手动将其插入到代码中(如下面注释掉的那样),它会在没有显示文本的情况下进行图形化。发生了什么事?
(graph with labels, running this code as is)
(graph without, running with dire= './templates')
import numpy as np
import matplotlib.pyplot as plt
import glob
import os
import sys
input_direct = raw_input
def get_dir(prompt):
while True:
direct_name = input_direct(prompt)
direct_name = os.path.join(os.getcwd(), direct_name)
if os.path.isdir(direct_name):
return direct_name
else:
print("try again with a real directory")
def files_in_dir(dir_name, file_spec="*.dat"):
return glob.glob(os.path.join(dir_name, file_spec))
def file_iter(files):
for fname in files:
with open(fname) as inf:
yield fname, inf.read()
dire = get_dir("enter directory: ")
#dire= './templates'
files = files_in_dir(dire, "*.dat")
files.sort(reverse=True)
content = [np.loadtxt(x, unpack=True) for x in files]
for i in range(len(files)):
label=files[i][43:-4]
plt.plot(content[i][0], (content[i][1]/np.sum(content[i][1])+float(i)/2000))
plt.text(content[i][0][-1], (content[i][1][-10]/np.sum(content[i][1])+float(i)/2000),label)
plt.show()