我正在尝试用我拥有的数据创建21个散点图。这21个图有不同的数据组合,我已经成功创建了正确的图。但是,我不能为我的生活弄清楚如何正确标记这些情节。这是我的代码:
F225W = np.loadtxt('path/phot_F225W.dat',usecols=[0], unpack=True)
F275W = np.loadtxt('path/phot_F275W.dat',usecols=[0], unpack=True)
...我为所有过滤器做了这个
Filters = [F225W,F275W,F336W,F438W,F606W,F814W,F850L]
for i in range(len(Filters)):
for j in range(len(Filters)):
B = Filters[i]
R = Filters[j]
BR = B-R
if j<=i:
pass
else:
plt.figure()
plt.gca().invert_yaxis()
plt.xlim(-6,6)
plt.ylim(-4,-15)
plt.xlabel(str(Filters[i]) + '-' + str(Filters[j]))
plt.ylabel(str(Filters[j]))
plt.plot(BR,R,'k.',markersize=1)
plt.show()
代码应该迭代过滤器的不同组合并绘制B-R与R的关系,但不是仅将它标记为B-R和R,我需要它来向我展示用于创建绘图的过滤器。目前它创建了正确的图,但标签没有出现。
答案 0 :(得分:0)
要扩展评论,这可以作为解决方案吗?循环将暂停,直到您关闭每次迭代时弹出的每个数字(如果保留plt.show())。您也可以保存每个图形并分别按照解决方案中的说明查看它们:
Filters = [F225W,F275W,F336W,F438W,F606W,F814W,F850L]
Filter_names = ['F225W','F275W','F336W','F438W','F606W','F814W','F850L']
for i in range(len(Filters)):
for j in range(len(Filters)):
B = Filters[i]
BB = Filter_names[i]
R = Filters[j]
RR = Filter_names[j]
BR = B-R
if j<=i:
pass
else:
plt.figure()
plt.gca().invert_yaxis()
plt.xlim(-6,6)
plt.ylim(-4,-15)
plt.xlabel(str(Filter_names[i]) + '-' + str(Filter_names[j]))
plt.ylabel(str(Filter_names[j]))
plt.title('B filter:' + BB + '\tR Filter:' + RR)
plt.plot(BR,R,'k.',markersize=1)
os.chdir(path_you_want_to_save_to)
plt.savefig('B_' + BB +'_R_' + RR + '.png')
#uncomment line to see graph and pause loop.
#also note the indentation has changed
#plt.show()
plt.close()
再看一遍之后,我猜猜过滤器是某种数组的列表?因此,您需要另一个列表Filter_names作为表示其名称的字符串。我认为这可以解决您的问题,因为您之前尝试使用列表数据标记它们。