0

.txt我正在尝试从具有数据集的文件 中绘制饼图,如下所示:

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

现在,1)我想绘制一个带有前 4 个条目的饼图,并带有适当的标签。
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()

但此代码正在生成错误报告:无法将字符串转换为浮点数...

我需要用它tempfile 来绘制.txt文件中存在的前 4 个条目吗?

如果我想使用最后两行数据集绘制饼图,那么可以使用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 回答