我对Python比较陌生,所以我还在学习细节。
我有一个包含45列数据的CSV文件,第一列是x轴,第2-45列都是y轴数据。我想要做的是导入所有这些数据(逐行),然后为每个y轴列创建相同的x,所以(x,y_1),(x,y_2).. ..(x,y_45)并将每个图分别保存为1.png,2.png ... 45.png。
我可以使用以下代码逐行手动执行此操作:
#!/usr/bin/python
from pylab import *
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import lines
from matplotlib.font_manager import FontProperties
data = csv2rec('e.csv')
x = np.array([column[0] for column in data])
y_1 = np.array([column[1] for column in data])
plot( x, y_1, 'k-', label='1' )
lgd = legend(loc='center right', bbox_to_anchor=(1.25, 0.75), fontsize='xx-small')
#plt.gca().invert_yaxis()
plt.gca().get_xaxis().get_major_formatter().set_useOffset(False)
plt.gca().get_yaxis().get_major_formatter().set_useOffset(False)
plt.gca().set_xlabel(r'$\lambda$($\AA$)')
ylabel( 'FUV-MAG(AB)' )
savefig('1.png', bbox_extra_artists=(lgd,), bbox_inches='tight')

但当然这需要一段时间手工完成。我知道如何在一系列x和y列上进行基本循环来绘制它们,但我想知道你是否有任何建议如何创建一个循环来导入,绘制并保存所有上面的图同一时间。
非常感谢。
答案 0 :(得分:0)
我还没有与csv2rec
合作,所以我对它的输出并不完全熟悉(因此range(1,len(column))
部分可能需要调整,但希望能说明基本原理),但是你尝试了一些东西吗?这样吗? (我也会尝试避免使用from pylab import *
,因为它很难跟踪哪个函数来自哪里)
from pylab import *
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import lines
from matplotlib.font_manager import FontProperties
data = csv2rec('e.csv')
for i in range(1,len(column)):
x = np.array([column[0] for column in data])
y_1 = np.array([column[i] for column in data])
plot( x, y_1, 'k-', label='1' )
lgd = legend(loc='center right', bbox_to_anchor=(1.25, 0.75), fontsize='xx-small')
#plt.gca().invert_yaxis()
plt.gca().get_xaxis().get_major_formatter().set_useOffset(False)
plt.gca().get_yaxis().get_major_formatter().set_useOffset(False)
plt.gca().set_xlabel(r'$\lambda$($\AA$)')
ylabel( 'FUV-MAG(AB)' )
name=str(i)
name+='.png'
savefig(name, bbox_extra_artists=(lgd,), bbox_inches='tight')
plt.close()