Eric,

thanks for follow-up! No, I didn't miss it.  Saw it Sunday night my time and 
spent time with my son getting him ready for start of university istead.

Re the setup of Python ... I will do that this week. 

Here's the code extract:

#!/usr/bin/env python
# −*− coding: UTF−8 −*−

import matplotlib
matplotlib.use('Agg') # before importing pyplot per docs
import matplotlib.pyplot as plt
import numpy as np

[snipped the import of Python and Django libraries]

###########################################################
def CreateAllWebSite():
    # whichever of these is called first is done fine.  Second flawed.  calling 
one at at time, each works ok
    CreateMemberStatCategoryFigure()
    CreateMemberStatFigure()
###############################################
def CreateMemberStatFigure():
    """
    This function creates the member statistics bar chart that is published 
multiple locations.
    """
    
membertypes=Membertype.objects.filter(active=True).order_by('emailorder').exclude(typecode='EXEC')
    mtypes=[]
    barchartcolor=[]
    mtypecodes=[]
    for i in membertypes:
        mtypecodes.append(i.typecode)
        mtypes.append(i.description)
        barchartcolor.append(i.barchartcolor)
    memberstatsm=MemberStatistics.monthly_objects.all()
    memberstatsp=MemberStatistics.monthlypivotbytype_objects.all()
    for i in memberstatsm:
        monthend=i['Date']

##### this section in development. a more generic way; but can't get the calls 
to p=plt to work. 
##### proably needs version 1.0 of Matplotlib or something.  As it works, 
optimise and fix later.
#    print mtypes,mtypecodes,barchartcolor    
#    width=24
#    month=[]
#    for j in memberstatsp:
#        month.append(None2Zero(j['month']))
#    N=len(month)
#    base=np.zeros(N,int)    # start off the base with zeros
#    for i in membertypes:
#        array1=[]
#        for j in memberstatsp:
#            array1.append(None2Zero(j[i.typecode]))
#        array1=np.array(array1)
#        p=plt.bar(month,array1,width,bottom=base,linewidth=0)
#        base=base+array1
#    plt.yticks(np.arange(0,200,20))
#    plt.title(ORG_NAME+' Membership by Month')
#    plt.ylabel('Count')
#    plt.show()
#    return
    
#####        
        

    corp1=[]
    corp2=[]
    corp3=[]
    ordm=[]
    ordr=[]
    ordh=[]
    month=[]
    for i in memberstatsp:
        month.append(None2Zero(i['month']))
        corp1.append(None2Zero(i['CORP1']))
        corp2.append(None2Zero(i['CORP2']))
        corp3.append(None2Zero(i['CORP3']))
        ordm.append(None2Zero(i['ORM']))
        ordr.append(None2Zero(i['ORMR']))
        ordh.append(None2Zero(i['HON']))
    N=len(month)
    corp1=np.array(corp1)
    corp2=np.array(corp2)
    corp3=np.array(corp3)
    ordm=np.array(ordm)
    ordr=np.array(ordr)
    ordh=np.array(ordh)

    base=np.zeros(N,int)
    base1=base+ordh
    base2=base1+corp3
    base3=base2+corp2
    base4=base3+corp1
    base5=base4+ordm
    
    width = 24        # the width of the bars: can also be len(x) sequence
    
    p1 = plt.bar(month, ordh, width, color=barchartcolor[0],linewidth=0)
    p2 = plt.bar(month, corp3, width, 
color=barchartcolor[1],bottom=base1,linewidth=0)
    p3 = plt.bar(month, corp2, width, 
color=barchartcolor[2],bottom=base2,linewidth=0)
    p4 = plt.bar(month, corp1, width, 
color=barchartcolor[3],bottom=base3,linewidth=0)
    p5 = plt.bar(month, ordm, width, 
color=barchartcolor[4],bottom=base4,linewidth=0)
    p6 = plt.bar(month, ordr, width, 
color=barchartcolor[5],bottom=base5,linewidth=0)

    plt.yticks(np.arange(0,200,20))
    plt.title(ORG_NAME+' Membership by Month')
    plt.ylabel('Count')
    plt.legend( (p1[0], p2[0], p3[0], p4[0], p5[0], p6[0]),mtypes,loc='best') 
    plt.show()
    
    matplotlib.rcParams['figure.figsize']=(3,2)
    
    fn=TEMP_DIR+SOC_MEMBER_STAT_BARCHART_FIGURE
    print "    CreateMemberStatFigure(): Saving ",fn,"..."
    plt.savefig(fn)
    
    return

###############################################
def CreateMemberStatCategoryFigure():
    """
    This function creates the member statistics category bar chart that is 
published multiple locations.
    """
    dt=strftime("%d %B %Y", gmtime())
    membercategories=Membercategory.objects.all()
    mcats=[]
    cnt=[]
    for i in membercategories:
        mcats.append(i.category)
        
cnt.append(Member.Active_objects.filter(membercategory__category=i.category).count())
    
    xlocations = np.array(range(len(mcats)))+0.5
    
    print mcats
    print cnt
    p1 = plt.bar(xlocations,cnt)
    plt.figtext(0.15,0.85,dt)
    plt.xticks(xlocations+0.4, mcats,rotation=17)
    plt.title(ORG_NAME+' Membership by Member Category')
    plt.ylabel('Count')
    plt.show()
    
    matplotlib.rcParams['figure.figsize']=(3,2)
    
    fn=TEMP_DIR+SOC_MEMBER_STAT_BARCHART_CAT_FIGURE
    print "    CreateMemberStatCategoryFigure(): Saving ",fn,"..."
    plt.savefig(fn)
    print "    CreateMemberStatCategoryFigure(): 
",SOC_MEMBER_STAT_BARCHART_CAT_FIGURE," created ..."
    
    return

################################################



On 9 Aug 2010, at 07:41, Eric Firing wrote:

> Did you miss my reply to the list?
> 
> Eric
> 
> -------- Original Message --------
> Subject: Re: [Matplotlib-users] Unable to make sequential calls to functions 
> with create matplotlib graphs ... second gets jumbled
> Date: Sun, 08 Aug 2010 08:10:37 -1000
> From: Eric Firing <efir...@hawaii.edu>
> Organization: University of Hawaii
> To: matplotlib-users@lists.sourceforge.net
> 
> On 08/08/2010 12:53 AM, Rob Schneider wrote:
>> Running 0.98.5.3
>> (would upgrade to 1.0 but having trouble installing it on Mac OS X as it 
>> doesn't appear to like the version of Python Apple provides).
>> 
> 
> Standard procedure on the Mac is to install the python from python.org.
> That way you don't risk fouling up the python that OS X is depending on,
> and at the same time your own code can use the version of python that
> most extension packages are built for.
> 
> 
>> I have a module where there are two functions which call matplotlib to each 
>> create a different graph which both saved to an output PNG file.  The import 
>> statements:
>> 
>> import matplotlib
>> matplotlib.use('Agg')
>> import matplotlib.pyplot as plt
>> import numpy as np
>> 
>> are at the top of the module file.  Neither function imports anything 
>> specifically, relying on the above imports.
>> 
>> I call each function sequentially.  The result is that the first graph is 
>> created correctly. The second graph is flawed, and in fact shows the legend 
>> from the first function.  When I reverse the function calls, which ever 
>> graphing function is called first is ok, but second is flawed. If I call 
>> each function on it's own, within the same Python session, the graphs (both) 
>> get produced flawlessly.
>> 
>> both charts are bar charts; but one does a stacked bar and the other is a 
>> simple bar chart.
>> 
>> Why would I not be able to call the two functions sequentially?  Why does 
>> the first call interfere with the second call?
>> 
> 
> I don't think anyone is going to be able to answer this question until
> you provide a minimal stand-alone code example.  Also, the process of
> stripping your code down to the shortest example that displays the
> undesired behavior may show you where the problem lies.
> 
> Eric
> 


------------------------------------------------------------------------------
This SF.net email is sponsored by 

Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev 
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to