2012-06-05 70 views
0

我试图从一个.txt文件与数据集绘制一个饼图的样子:馅饼情节matplotlib在Python

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() 

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

,做我需要使用tempfile绘制存在于.txt文件第4项。

如果我想使用最后两行数据集绘制饼图,那么可以使用slicing来完成。

+0

发布回溯 –

+0

如何解决没有2)最后一行中有 – Ovisek

回答

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() 

结果

enter image description here

+0

问题。它引发错误:'元组'对象没有'show'属性。如果在下一行使用:plt.show(),则可以更正。 – Ovisek

+0

@Ovisek:哪个版本的Python,matplotlib,OS?适用于Windows 7 64位,Python 2.7.2,matplotlib 1.1.0 –

+0

okey很好,但用于绘制最后2个条目的饼图我该如何跳过 – Ovisek