在for循环中绘图时使用* args

时间:2017-08-11 06:28:37

标签: python function matplotlib args

我有一个绘图功能:

def graph(title, loop, *plotdata): 

    fig = plt.figure(figsize=(16,16))
    n = 0   
    for i in loop: 
        n += 1
        fig.add_subplot(plt.subplot(4,3,n))
        fig.suptitle('%s' % (title))
        for data in plotdata:
            (data).plot(linewidth=3,label=i)     

我称之为:

graph('Sector Graph', sectors, sector_return[i])    
# sectors is a list of all S&P sectors
# sector_return is a dict, with S&P sectors as keys and returns each sector as values  

sector_return看起来像这样:

 {'XLB': Date
 2015-01-05         .012
 2015-01-06         .3
 2015-01-07         -.5
 ...
 'XLE': Date
 2015-01-05         -.7
 2015-01-06         -.4
 2015-01-07         -1.6
 ...

目前正在发生的是,这为所有图表(sector_return中的最后一个扇区)绘制了相同的sectors。我认为我的问题是嵌套for循环 - 但如果我把它拿出来并且只使用plotdata我得到:

def graph(title, loop, *plotdata): 

    fig = plt.figure(figsize=(16,16))
    n = 0   
    for i in loop: 
        n+=1
        fig.add_subplot(plt.subplot(4,3,n))
        fig.suptitle('%s' % (title))
        plotdata.plot(linewidth=3, label=i)


In: graph('Sector Graph', sectors,sector_return[i])    

Out: AttributeError: 'tuple' object has no attribute 'plot'

我的预期输出是在子图上绘制每个扇区的回报,并且能够添加无限制的args(例如我的下一个函数orbital_returns,并为每个扇区绘制这些函数。)

0 个答案:

没有答案