在for循环中需要正确的x& y标签

时间:2016-02-28 22:44:08

标签: matplotlib

我正在尝试用我拥有的数据创建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,我需要它来向我展示用于创建绘图的过滤器。目前它创建了正确的图,但标签没有出现。

1 个答案:

答案 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作为表示其名称的字符串。我认为这可以解决您的问题,因为您之前尝试使用列表数据标记它们。