예제 #1
0
파일: chart.py 프로젝트: nvidial2/callbox
    def draw_overall(self,data,cl_list,title,band,max_y):
        self.init()
        chart = GroupedVerticalBarChart(1000,300,
                                        y_range=(0,max_y))


        for i in range(0,len(data)) :
            chart.add_data(data[i])

        chart.set_bar_width(18)
        chart.set_colours(['76A4FB', '224499','208020', '80C65A','FF0000'])

        chart.set_legend(cl_list)

        index=chart.set_axis_labels(Axis.BOTTOM, scenario_implemented)
        chart.set_axis_range(Axis.LEFT,0,max_y)
        chart.set_axis_style(index, colour='000000', \
                font_size= 6)

        chart.set_grid(0,5, 5, 5)
        IMG_DIR = os.path.join("serv2.icerasemi.com", "eng", "nsait", "img\\")
        IMG_DIR = 'serv2.icerasemi.com\eng\nsait\img\\'
        #dir = '\\serv2.nvidia.com\eng\nsait\img'
        dir = 'chart\\'
        chart.download(dir+title+str(band)+'.jpeg')
예제 #2
0
    def bargraph(self, days, bars, output, title=""):

        data = []
        min_count = 0
        max_count = 0
        date = lambda i: datetime.date.today() + datetime.timedelta(-days + i)

        for i in range(0, days + 1):
            count = bars[date(i)]
            max_count = max(count, max_count)
            min_count = min(count, min_count)
            data.append(count)
        # TOFIX: google chart API for negative numbers is too screwy, for now only >0
        min_count = max(min_count, 0)
        chart = GroupedVerticalBarChart(800,
                                        300,
                                        y_range=[min_count, max_count])
        chart.add_data(data)
        chart.set_bar_width(500 / days)
        # Set the line colour to blue
        chart.set_colours(['0000FF'])

        # Set the horizontal dotted lines
        chart.set_grid(0, 25, 5, 5)

        if days >= 30:
            fmt = "%d"
        else:
            fmt = "%d/%m"
        chart.set_axis_labels(Axis.BOTTOM, \
                              [date(i).strftime(fmt) for i in range(0,days)])

        # The Y axis labels contains 0 to 100 skipping every 25, but remove the
        # first number because it's obvious and gets in the way of the first X
        # label.
        delta = float(max_count - min_count) / 100
        skip = max(int(delta) / 5 * 100, 100)
        left_axis = range(0, max_count + 1, skip)
        left_axis[0] = ''
        chart.set_axis_labels(Axis.LEFT, left_axis)

        if len(title) > 0:
            chart.set_title(title % days)

        chart.download(output)
예제 #3
0
        def bargraph(self,days,bars,output,title = ""):

                data = []
                min_count = 0
                max_count = 0
                date = lambda i:datetime.date.today() + datetime.timedelta(-days + i)

                for i in range(0,days+1):
                        count = bars[date(i)]
                        max_count = max(count,max_count)
                        min_count = min(count,min_count)
                        data.append(count)
                # TOFIX: google chart API for negative numbers is too screwy, for now only >0
                min_count = max (min_count,0)
                chart = GroupedVerticalBarChart(800,300,y_range=[min_count, max_count])
                chart.add_data(data)
                chart.set_bar_width(500 / days)
                # Set the line colour to blue
                chart.set_colours(['0000FF'])

                # Set the horizontal dotted lines
                chart.set_grid(0, 25, 5, 5)

                if days >= 30:
                        fmt = "%d"
                else:
                        fmt="%d/%m"
                chart.set_axis_labels(Axis.BOTTOM, \
                                      [date(i).strftime(fmt) for i in range(0,days)])

                # The Y axis labels contains 0 to 100 skipping every 25, but remove the
                # first number because it's obvious and gets in the way of the first X
                # label.
                delta = float(max_count-min_count) / 100
                skip = max(int(delta) / 5 * 100,100)
                left_axis = range(0, max_count + 1, skip)
                left_axis[0] = ''
                chart.set_axis_labels(Axis.LEFT, left_axis)

                if len(title) > 0:
                        chart.set_title(title % days)

                chart.download(output)
예제 #4
0
    site_name = row[6],
  )
  conn.execute(ins)


preceptors = conn.execute(select([stats.c.preceptor_name, stats.c.site_name
  ]).group_by(stats.c.preceptor_name, stats.c.site_name))

for p in preceptors:
  chart = GroupedVerticalBarChart(500, 350,
    y_range=(0,5))
  chart.set_bar_width(7)
  chart.set_bar_spacing(0)
  chart.set_group_spacing(4)
  chart.set_colours(['ccffff', 'ffcc00', 'cc99ff'])
  chart.set_grid(0, 20, 5, 5)
  
  left_axis = range(0, 6, 1)
  left_axis[0] = '' #interfers with first x label
  chart.set_axis_labels(Axis.LEFT, left_axis)

  prec = p[0]
  site = p[1]
  questions = conn.execute(select([stats.c.question_name, stats.c.order, func.avg(stats.c.choice_id)],
      stats.c.preceptor_name == prec
    ).group_by(stats.c.order, stats.c.question_name, 
    ).order_by(stats.c.order
    )).fetchall()
  ques_avgs = map(lambda q: q[2], questions)
  chart.add_data(ques_avgs)
  chart.set_axis_labels(Axis.BOTTOM, range(1,len(ques_avgs)+1))
예제 #5
0
파일: chart.py 프로젝트: nvidial2/callbox
    def draw_scenario(self,dxp0,dxp1,cpu_dl,cpu_ul,ftp_dl,ftp_ul,cl_list,band,max_y,scen,branch):

        chart = GroupedVerticalBarChart(1000,300,
                                        y_range=(0,max_y))

        fixed_color =['ff154d', '7fff00' ,'0000ff','db7093','9f9f5f']

        color = []
        for i in range(0,len(cl_list)):
            if i < 5 :
                color.append(fixed_color[i])
            else:
                color.append(self.triplet(randint(100, 255), randint(100, 255), randint(100, 255)))

        chart.set_colours(color)

        #chart.set_colours(['76A4FB', '224499','208020', '80C65A','FF0000'])
        chart.set_legend(cl_list)
        chart.set_grid(0,5, 5, 5)
        #print scen
        if re.search('DL',scen) and re.search('UL',scen) :
            for j in range(0,len(scenario_implemented)):
                if scen == scenario_implemented[j] :
                    for i in range(0,len(cl_list)):
                        chart.add_data([dxp0[i][j],dxp1[i][j],cpu_dl[i][j],ftp_dl[i][j],cpu_ul[i][j],ftp_ul[i][j]])
                    index=chart.set_axis_labels(Axis.BOTTOM,["dxp0","dxp1","CPU_DL","FTP_DL","CPU_UL","FTP_UL"])
                    chart.set_bar_width(18)

        elif re.search('DL',scen):
            for j in range(0,len(scenario_implemented)):
                if scen == scenario_implemented[j] :
                    for i in range(0,len(cl_list)):
                        chart.add_data([dxp0[i][j],dxp1[i][j],cpu_dl[i][j],ftp_dl[i][j]])

                    index=chart.set_axis_labels(Axis.BOTTOM,["dxp0","dxp1","CPU_DL","FTP_DL"])
                    if(len(cl_list)<5):
                        chart.set_bar_width(36)
                    else:
                        chart.set_bar_width(18)

        elif re.search('UL',scen):
            for j in range(0,len(scenario_implemented)):
                if scen == scenario_implemented[j] :
                    for i in range(0,len(cl_list)):
                        chart.add_data([dxp0[i][j],dxp1[i][j],cpu_ul[i][j],ftp_ul[i][j]])

                    index=chart.set_axis_labels(Axis.BOTTOM,["dxp0","dxp1","CPU_UL","FTP_UL"])
                    if(len(cl_list)<5):
                        chart.set_bar_width(36)
                    else:
                        chart.set_bar_width(18)


        chart.set_axis_range(Axis.LEFT,0,max_y)
        chart.set_axis_style(index, colour='000000', \
                font_size= 12)

        chart_dir = 'chart\\'
        file = scen+"_"+"Band"+str(band)+"_"+branch+".jpeg"
        #print "src",chart_dir+file
        #print "dest",CHART_LOC+'\\\\'+file
        chart.download(chart_dir+file)