Ejemplo n.º 1
0
    def to_gchart(self):
        from pygooglechart import ScatterChart
        chart = ScatterChart(800, 300, x_range=(-1, 24), y_range=(-1, 7))

        chart.add_data([(h % 24) for h in range(24 * 8)])

        d=[]
        for i in range(8):
            d.extend([i] * 24)
        chart.add_data(d)

        day_names = "Sun Mon Tue Wed Thu Fri Sat".split(" ")
        days = (0, 6, 5, 4, 3, 2, 1)

        sizes=[]
        for d in days:
            sizes.extend([self.h["%d %02d" % (d, h)] for h in range(24)])
        sizes.extend([0] * 24)
        chart.add_data(sizes)

        #Easier to manually set the x label for the 12am/12pm labels 
        chart.set_axis_labels('x', ['|12am|1|2|3|4|5|6|7|8|9|10|11|12pm|1|2|3|4|5|6|7|8|9|10|11|'])
        chart.set_axis_labels('y', [''] + [day_names[n] for n in days] + [''])

        chart.add_marker(1, 1.0, 'o', '333333', 25)
        
        chart.download(self.options.filename)
        return chart.get_url()
Ejemplo n.º 2
0
    def buildScatterChart(self,
                          data,
                          xKey,
                          yKey,
                          x_range=None,
                          y_range=None,
                          buildLabels=False):
        chart = ScatterChart(self.defaultWidth,
                             self.defaultHeight,
                             x_range=x_range,
                             y_range=y_range)

        xData = list()
        yData = list()

        for item in data:
            xData.append(item[xKey])
            yData.append(item[yKey])

        if not x_range: x_range = (0, max(xData))
        if not y_range: y_range = (0, max(yData))

        chart.add_data(xData)
        chart.add_data(yData)

        if buildLabels:
            chart.set_axis_labels('x', self.buildLabels(x_range))
            chart.set_axis_labels('y', self.buildLabels(y_range))

        return chart
Ejemplo n.º 3
0
def scatter_random_marker_sizes():
    chart = ScatterChart(settings.width, settings.height, 
                         x_range=(0, 100), y_range=(0, 100))
    chart.add_data(helper.random_data())
    chart.add_data(helper.random_data())
    chart.add_data(helper.random_data())
    chart.download('scatter-random-marker-sizes.png')
Ejemplo n.º 4
0
    def to_gchart(self):
        from pygooglechart import ScatterChart
        chart = ScatterChart(800, 300, x_range=(-1, 24), y_range=(-1, 7))

        chart.add_data([(h % 24) for h in range(24 * 8)])

        d = []
        for i in range(8):
            d.extend([i] * 24)
        chart.add_data(d)

        day_names = "Sun Mon Tue Wed Thu Fri Sat".split(" ")
        days = (0, 6, 5, 4, 3, 2, 1)

        sizes = []
        for d in days:
            sizes.extend([self.h["%d %02d" % (d, h)] for h in range(24)])
        sizes.extend([0] * 24)
        chart.add_data(sizes)

        chart.set_axis_labels('x', [''] + [str(h) for h in range(24)] + [''])
        chart.set_axis_labels('y', [''] + [day_names[n] for n in days] + [''])

        chart.add_marker(1, 1.0, 'o', '333333', 25)
        return chart.get_url() + '&chds=-1,24,-1,7,0,20'
Ejemplo n.º 5
0
 def run(self, serial, tag, tagname, pagename, soup, request, response):
     width = 384
     height = 512
     buckets = self.ac.indexer.hitmap.getBuckets()
     # transpose data (we might be doing sampling at a different interval, and
     # here we want weekday:hour slots)
     self.data = {}
     for t in buckets.keys():
         slot = time.strftime("%2w%2H", time.localtime(int(t)))
         if slot in self.data.keys():
             self.data[slot] = self.data[slot] + buckets[t]
         else:
             self.data[slot] = buckets[t]
     grid = {'x': [0 for x in range(6)], 'y': [0 for y in range(23)]}
     x = []
     y = []
     z = []
     buffer = []
     for slot in self.data.keys():
         x.append(1 + int(slot[0:2]))
         y.append(24 - int(slot[2:4]))
         z.append(int(self.data[slot]))
     chart = ScatterChart(width, height, x_range=(0, 7), y_range=(0, 25))
     chart.add_data(x)
     chart.add_data(y)
     chart.add_data(z)
     chart.set_axis_labels(Axis.LEFT,
                           [''] + ["%02dh" % (23 - x)
                                   for x in range(24)] + [''])
     chart.set_axis_labels(
         Axis.TOP, ['', 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'])
     chart.add_marker(0, 1.0, 'o', '00e0e040', 50)
     buffer.append('<img alt="Google Scatter Chart" src="%s">' %
                   chart.get_url())
     tag.replaceWith(u''.join(buffer))
Ejemplo n.º 6
0
def create_google_scatter_chart(file,
                                x_values,
                                y_values,
                                z_values,
                                x_label='x',
                                y_label='y'):

    x_max = max(x_values)
    y_max = max(y_values)
    z_max = max(z_values)

    chart = ScatterChart(600, 300, x_range=(0, x_max), y_range=(0, y_max))

    chart.set_legend(['speed in mbps'])

    left_axis = range(0, y_max + 1, 4)
    left_axis[0] = ''
    left_axis[-1] = y_label
    chart.set_axis_labels(Axis.LEFT, left_axis)

    bottom_axis = range(0, x_max + 1, 4)
    bottom_axis[0] = ''
    bottom_axis[-1] = x_label
    chart.set_axis_labels(Axis.BOTTOM, bottom_axis)

    chart.add_data(x_values)
    chart.add_data(y_values)
    chart.add_data(z_values)

    return chart.get_url(None)
Ejemplo n.º 7
0
    def buildTagBuddiesWallPosterScatterChart(self, data):
        chart = ScatterChart(self.defaultWidth, self.defaultHeight)

        xData = list()
        yData = list()

        for item in data.values():
            xData.append(item[0])
            yData.append(item[1])

        chart.add_data(xData)
        chart.add_data(yData)

        chart.set_axis_labels('x', self.buildLabels((0, max(xData))))
        chart.set_axis_labels('y', self.buildLabels((0, max(yData))))

        chart.set_title('Wall Posts - Common Photo Tags')

        return chart
Ejemplo n.º 8
0
def scatter_circle():
    chart = ScatterChart(settings.width, settings.height, 
                         x_range=(0, 100), y_range=(0, 100))
    steps = 40
    xradius = 25
    yradius = 45
    xmid = 50
    ymid = 50
    xlist = []
    ylist = []
    for angle in xrange(0, steps + 1):
        angle = float(angle) / steps * math.pi * 2
        xlist.append(math.cos(angle) * xradius + xmid)
        ylist.append(math.sin(angle) * yradius + ymid)
    chart.add_data(xlist)
    chart.add_data(ylist)
    chart.add_data(range(len(ylist)))
    chart.add_marker(0, 1.0, 'o', '00ff00', 10)
    chart.download('scatter-circle.png')
Ejemplo n.º 9
0
    def generate_chart(cls, data, width=950, height=300):
        """
            Gets a github style punchcard chart.
            Hat tip: http://github.com/dustin/bindir/blob/master/gitaggregates.py
        """
        no_data = not data
        try:
            from pygooglechart import ScatterChart
        except ImportError:
            raise Exception("WorkerActivityTimes requires pygooglechart.")

        chart = ScatterChart(width, height, x_range=(-1, 24), y_range=(-1, 7))

        chart.add_data([(h % 24) for h in range(24 * 8)])

        d = []
        for i in range(8):
            d.extend([i] * 24)
        chart.add_data(d)

        # mapping between numbers 0..6 and its day of the week label
        day_names = "Sun Mon Tue Wed Thu Fri Sat".split(" ")
        # the order, bottom-to-top, in which the days should appear
        # i.e. Sun, Sat, Fri, Thu, etc
        days = (0, 6, 5, 4, 3, 2, 1)

        sizes = []
        for d in days:
            sizes.extend([data[(d, h)] for h in range(24)])
        sizes.extend([0] * 24)
        if no_data:
            # fill in a line out of view so that chart.get_url() doesn't crash
            sizes.extend([1] * 24)
        chart.add_data(sizes)

        chart.set_axis_labels('x', [''] + [str(h) for h in range(24)] + [''])
        chart.set_axis_labels('y', [''] + [day_names[n] for n in days] + [''])

        chart.add_marker(1, 1.0, 'o', '333333', 25)
        return chart.get_url() + '&chds=-1,24,-1,7,0,20'