【发布时间】:2019-03-14 12:58:19
【问题描述】:
我在 python 2 中执行的每个长计算都会生成 20 个 CSV 文件。从每个文件中的所有数据集中,这里有 2 个很重要。第一个设置为 x 轴上的 row[0],第三个设置为 y 轴上的 row[2]。第一组 (row[0]) 总是相同的,所以一个条目就足够了,但是第三组 (row[2]) 由文件更改,需要根据我的需要绘制在 (row[0]) 上绘制所有叠加文件中的所有第三组。
我不是程序员,但我可以按照以下方式单独绘制它们:
import matplotlib.pyplot as plt
import csv
x = []
y = []
with open('energy.csv','r') as csvfile:
plots = csv.reader(csvfile, delimiter=',')
for row in plots:
x.append(row[0])
y.append(row[2])
plt.plot(x,y, label='Energies')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Energy Graph\n per particle')
plt.legend()
plt.savefig('energy.png')
plt.savefig('energy.pdf')
plt.show()
但要叠加所有数据集,我想尝试“for file_name in files:”将数据集作为变量附加到文件名,并将它们全部绘制在一张图中:
for dirpath, dirnames, files in os.walk('.'):
for file_name in files:
if file_name.endswith('.csv'):
print(file_name)
with open(file_name,'r') as csvfile:
plots = csv.reader(csvfile, delimiter=',')
for row in plots:
x.append(row[0])
file_name.append(row[2])
plt.plot(x,file_name, label='Loaded from file!')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Energy')
plt.legend()
plt.savefig('1.png')
plt.savefig('1.pdf')
plt.show()
然后我得到这个错误:
file_name.append(行[1]) AttributeError: 'str' 对象没有属性 'append'
任何帮助将不胜感激
【问题讨论】:
-
你想用
x.append和filename.append达到什么目的? -
我猜 x.append 附加了我在 row[0] 中的数据集?这很有效,因为我明白了情节。我希望我可以通过将集合作为变量附加到文件名中来从每个文件中获取每第三行 [],然后将每个文件的第三行中的所有 20 个集合绘制在彼此之上。我不是程序员,所以我无法评论它是如何工作的,但如果有任何其他建议,那就太好了。
标签: python csv matplotlib plot overlay