0

.txtデータセットが次のようなファイル から円グラフをプロットしようとしています。

asp: 2.11
glu: 1.11
arg: 0.99
his: 5.11
acid: 11.1
base: 2.11

ここで、1)最初の4つのエントリを適切にラベル付けして、円グラフをプロットしたいと思います。
2)次に、最後の2つのエントリを使用した別の円グラフ。

この次のコードで試しましたが、エラーが発生します。私のコードは次のとおりです。

from pylab import *
inp = open('c:/users/rox/desktop/xx.txt','r').read().strip().replace(': ',' ').split('\n')
for line in map(str.split,inp):
    x = line[0]
    z = line[1]
    fracs = [x]
    labels = [z]
    pie(fracs,labels=labels,explode=None,autopct='%1.1f%%,shadow=False)
    show()

しかし、このコードはエラーレポートを生成しています:文字列をfloatに変換できませんでした...

ファイルtempfile に存在する最初の4つのエントリをプロットするために使用する必要がありますか?.txt

データセットの最後の2行を使用して円グラフをプロットする場合は、を使用して行うことができますslicing

4

1 に答える 1

3

編集:入力をより一般的にして、同じファイルから複数のプロットを読み取ることができるようにします:

import matplotlib.pyplot as plt

def read_data(f, num_lines=1, split_on=':'):
    lines = (f.next() for i in range(num_lines))
    pieces = (line.split(split_on) for line in lines)
    data = ((a,float(b)) for a,b in pieces)
    return zip(*data)

with open("xx.txt") as inf:
    amino_names, amino_values = read_data(inf, 4)
    ph_names, ph_values = read_data(inf, 2)

fig = plt.figure(figsize=(2,1))
p1 = fig.add_subplot(1,2,1)
p1.pie(amino_values, labels=amino_names)
p2 = fig.add_subplot(1,2,2)
p2.pie(ph_values, labels=ph_names)
fig.show()

結果は

ここに画像の説明を入力

于 2012-06-05T03:05:28.580 に答える