2014-06-18 47 views
-1

我有一个情节,一组应用程序上行/下行,分布与CDF一起显示,我想通过在其图例中添加更多信息来改善情节,例如I希望它给我看每个变量, 点的数量的代码,而不是显示我:使用Matplotlib向图例添加信息

--- Uplink 
___ Downlink 

我想看到这一点:

--- Uplink(54) 
___ Downlink(88) 

,其中54是绘制数点在这个上行链路中,其中88是t中绘制点的数量他的下行

这里是我的代码,我想提高:

import csv 
import matplotlib.pyplot as plt 
import pylab 
#---Reading from a csv file 
def getColumn(filename, column): 
    results = csv.reader(open(filename), delimiter="\t") 
    return [result[column] for result in results] 
#---the cdf Function 
def cdf(inputList): 
    outputList = [] 
    inputList.sort() 
    for i in range(0, len(inputList)): 
     outputList.append([inputList[i], (i+1.0)/len(inputList)]) 
    return outputList 
#--getting the data i want from the csv file 
fgfS=getColumn("dataFG.csv",2) 
bgfS=getColumn("dataBG.csv",2) 
fgifS=getColumn("dataiFG.csv",2) 
bgifS=getColumn("dataiBG.csv",2) 
#---the points to plot: 
fgfS1=[] 
fgfS2=[] 

for i in cdf(map(float,fgfS)): 
    fgfS1.append(i[0]) 
    fgfS2.append(i[1]) 

bgfS1=[] 
bgfS2=[] 
for i in cdf(map(float,bgfS)): 
    bgfS1.append(i[0]) 
    bgfS2.append(i[1]) 

fgifS1=[] 
fgifS2=[] 

for i in cdf(map(float,fgifS)): 
    fgifS1.append(i[0]) 
    fgifS2.append(i[1]) 

bgifS1=[] 
bgifS2=[] 
for i in cdf(map(float,bgifS)): 
    bgifS1.append(i[0]) 
    bgifS2.append(i[1]) 


fig2, (ax2,ax02) = plt.subplots(1,2, sharey=True) 
labels=('Uplink','Downlink') 
fig2.suptitle('Applications Down/Up link', fontsize=20) 
#******************  
ax2.set_title('App 1') 
#ax2.set_xlabel('seconds') 
ax2.set_ylabel('CDF') 
ax2.grid(True) 
ax2.plot(fgfS1,fgfS2, 'b') 
ax2.plot(bgfS1,bgfS2, 'c') 
ax2.set_xscale('log') 
ax2.legend(labels,loc='best') 
#****************** 
ax02.set_title('App 3') 
ax02.set_xlabel('seconds') 
ax02.set_ylabel('CDF') 
ax02.grid(True) 
ax02.plot(fgifS1,fgifS2, 'b') 
ax02.plot(bgifS1,bgifS2, 'c') 
ax02.set_xscale('log') 
ax02.legend(labels,loc='best') 

所以我想补充LEN(bgfS1)为例,但我仍然奥斯卡最佳吨弄清楚在何处以及如何....

+2

你的问题不涉及CDF,你提供太多不相干的代码。基本上你想要的是用图例显示附加信息 - 这是一个有效的问题,如果你的答案和代码是简明扼要的,而不仅仅是整个代码,你将增加获得答案的机会。 – Korem

回答

0

只需将其附加到您的labels列表组件中,即可确定最终显示的内容。

所以,你会想:

ax2.legend(['{} ({})'.format(lab, cnt) for lab,cnt in izip(labels, (len(fgfS1), len(bgfS1)))],loc='best') 

(这是本质上只是追加数到每一个标签)