0

関数を使用してディレクトリを歩いていwalkます>.cntファイルを検索します>関心のある値を数えます>円グラフにそれらをプロットします。しかし、問題は、私のプログラムが最初のフォルダーを処理してプロットするとき、それは正常に動作することです。しかし、その後、それが読み取ってプロットするフォルダーはすべてオーバーラップします。私のコードにバグがあるかどうか理解できません。私は次のように使用しました:

for root,dirs,files in os.walk(path):
    aspCount = 0
    gluCount = 0
    aspCountCol1 = 0
    aspCountCol2 = 0
    gluCountCol1 = 0
    gluCountCol2 = 0

    listOfFile = glob.iglob(os.path.join(root,'*.cnt'))
    for filename in listOfFile:
        inp = open(filename,'r').read().strip().split('\n')
        for line in map(str.split,inp):

            k = line[-1]
            m = line[0]
            if k == 'ASP':
               aspCountCol1 += 1
            elif m == 'ASP':
               aspCountCol2 += 1
            if k == 'GLU':
               gluCountCol1 += 1
            elif m == 'GLU'
               gluCountCol1 +=1
                     # here lies the problem for me !!!!
        aspCount = aspCountCol1 + aspCountCol1
        gluCount = gluCountCol1 + gluCountCol1
        #now plotting......
        from pylab import *
        figure(1, (figsize=(8,8))
        labels = 'asp','glu'
        fracs = [asp_count,glu_count]
        pie(fracs,explode=None,labels=labels,autopct='%1.1f%%',shadow=False)
        c = 'fig.png'
        savefig(os.path.join(root,c))

現在、問題は次のとおりです。このコードでは、.cntファイルを含むさまざまなサブフォルダーを含むディレクトリを処理すると、エラーが発生しなくなります。ただし、最初のフォルダーによって生成されたグラフは問題ありませんが、progが次のフォルダーを処理するときにデータを正常に処理しますが、生成されたグラフは前のフォルダーとオーバーラップします。
私が処理していたファイルは次のとおりです。

LYS  ARG
ASP  GLU
GLU  SAP
JAS  ASP
SAK  GLU
4

1 に答える 1

2

を使用して、プロット間のpylabプロットをクリアする必要がありますclf()

また、何from pylab import *度もする理由はありません。

matplotlib(私はそのようなループでプロットするときにAPIを使用することを好みます)

于 2012-06-01T17:00:55.430 に答える