Ejemplo n.º 1
0
    def render_treemap(self,
                       data,
                       value=0,
                       label=1,
                       ignore_value=False,
                       file_name='untitled_chart',
                       title=''):
        ''' Function: renders Treemap chart '''
        # Chart Initialization
        chart = pygal.Treemap()

        # Chart Data
        if isinstance(data, list):
            chart.add('Anime', [{
                'value': i[value] * (not ignore_value) + ignore_value,
                'label': str(i[label])
            } for i in data])
        elif isinstance(data, dict):
            for category in data:
                chart.add(
                    str(category), [{
                        'value': i[value] * (not ignore_value) + ignore_value,
                        'label': str(i[label])
                    } for i in data[category]])

        # Finish Chart
        self.finish_chart(chart,
                          file_name=file_name,
                          show_legend=isinstance(data, dict),
                          title=title)
Ejemplo n.º 2
0
def portfolio_stats():
    """ Charts route """

    # Load data
    user_token = dict(
        db.session.query(
            UsersTokens.tokens,
            UsersTokens.token_amount).filter_by(user=current_user).all())

    # Piechart
    pie_graph = pygal.Pie(width=500, height=500, style=DarkGreenBlueStyle)
    for name, amount in user_token.items():
        pie_graph.add(name, amount)
    pie_graph = pie_graph.render_data_uri()

    # Barchart
    bar_graph = pygal.Bar(width=500, height=500, style=DarkGreenBlueStyle)
    for name, amount in user_token.items():
        bar_graph.add(name, amount)
    bar_graph = bar_graph.render_data_uri()

    # Treemap
    tree_map = pygal.Treemap(width=900, height=400, style=DarkGreenBlueStyle)
    for name, amount in user_token.items():
        tree_map.add(name, amount)
    tree_map = tree_map.render_data_uri()

    return render_template('portfolio_stats.html',
                           pie_graph=pie_graph,
                           bar_graph=bar_graph,
                           tree_map=tree_map)
Ejemplo n.º 3
0
def createTreemap(data, title, treename='attribute_treemap.svg', tablename='attribute_table.html'):
    labels_categ = data.index.labels[0]
    labels_types = data.index.labels[1]
    names_categ = data.index.levels[0]
    names_types = data.index.levels[1]
    categ_types_hash = {}
    for categ_id, type_val, total in zip(labels_categ, labels_types, data):
        if not categ_types_hash.get(names_categ[categ_id]):
            categ_types_hash[names_categ[categ_id]] = []
        dict_to_print = {'label': names_types[type_val], 'value': total}
        categ_types_hash[names_categ[categ_id]].append(dict_to_print)

    colors = {categ: "#%06X" % random.randint(0, 0xFFFFFF) for categ in categ_types_hash.keys()}
    style = Style(background='transparent',
                  plot_background='#FFFFFF',
                  foreground='#111111',
                  foreground_strong='#111111',
                  foreground_subtle='#111111',
                  opacity='.6',
                  opacity_hover='.9',
                  transition='400ms ease-in',
                  colors=tuple(colors.values()))

    treemap = pygal.Treemap(pretty_print=True, legend_at_bottom=True, style=style)
    treemap.title = title
    treemap.print_values = True
    treemap.print_labels = True

    for categ_name, types in categ_types_hash.items():
        treemap.add(categ_name, types)

    createTable(colors, categ_types_hash)
    treemap.render_to_file(treename)
Ejemplo n.º 4
0
def groups():
    """Render tree map of group size."""
    treemap = pygal.Treemap(style=clean_style_large_text, margin=0)
    for grp in RecipientGroup.objects.filter(is_archived=False):
        treemap.add(str(grp), [grp.recipient_set.all().count()])

    return treemap.render(show_legend=False)
Ejemplo n.º 5
0
def graph():
    _charts = [
        pygal.Line(),
        pygal.Bar(),
        pygal.Histogram(),
        pygal.XY(),
        pygal.Pie(),
        pygal.Radar(),
        pygal.Box(),
        pygal.Dot(),
        pygal.Funnel(),
        pygal.SolidGauge(),
        pygal.Gauge(),
        pygal.Pyramid(),
        pygal.Treemap()
    ]
    charts = []
    for chart in _charts:
        chart.title = '% Change Coolness of programming languages over time.'
        chart.x_labels = ['2011', '2012', '2013', '2014', '2015', '2016']
        chart.add('Python', [15, 31, 89, 200, 356, 900])
        chart.add('Java', [15, 45, 76, 80, 91, 95])
        chart.add('C++', [5, 51, 54, 102, 150, 201])
        chart.add('All others combined!', [5, 15, 21, 55, 92, 105])
        charts.append(chart.render_data_uri())
    return render_template('part2/graph.html',
                           charts=charts,
                           root_path=root_path)
Ejemplo n.º 6
0
def createTreemap(data,
                  title,
                  treename='attribute_treemap.svg',
                  tablename='attribute_table.html'):
    style, colorsList = createStyle(data.index.levels)
    treemap = pygal.Treemap(pretty_print=True,
                            legend_at_bottom=True,
                            style=style)
    treemap.title = title
    treemap.print_values = True
    treemap.print_labels = True

    categories, types = createLabelsTreemap(data.index.levels,
                                            data.index.labels)
    it = 0

    for i in range(len(categories)):
        types_labels = []
        for typ in types[i]:
            tempdict = {}
            tempdict['label'] = typ
            tempdict['value'] = data[it]
            types_labels.append(tempdict)
            it += 1
        treemap.add(categories[i], types_labels)

    createTable(data, 'Attribute Distribution', tablename, colorsList)
    if treename == None:
        treemap.render_to_file('attribute_treemap.svg')
    else:
        treemap.render_to_file(treename)
Ejemplo n.º 7
0
def rate_movies():
    """ Create Rated of Movies treemap_graph of movies in year 2000-2016 and Load Dataset title and rate"""
    for year in range(2000, 2017):
        print(">> Year : %i" % year)

        # Start display
        print(">> [status] Create Graph Starting!")

        dataset = pd.read_csv("Data_Export/%i.csv" % (year))
        title = dataset["title"].tolist()  #Title Movies
        rate = dataset["rate"].tolist()  #Rate
        graph = pygal.Treemap(x_title="Movie Name & Rated")
        graph.title = "Rated of Movies in year %i Dataset" % year
        for i in range(len(title)):
            graph.add(title[i], rate[i])
        graph.render_to_file(
            "Graph_Export/Rated_Movies/Treemap/Rated_of_Movies_%i.svg" % year)

        # End display
        print(">> [status] Created Graph Successful!")
        print()

    # Used time
    print(">> [status] Completed : Used time = %s seconds" %
          (time.time() - start_time))
Ejemplo n.º 8
0
def get_subjects_activities(student):
    bar_chart = pygal.Treemap(legend_at_bottom=True,
                              style=style_score_activities_bar)
    subjects = student.subjects.annotate(Count('globalscoreactivity'))
    # bar_chart.x_labels = [subject.name for subject in subjects.order_by('-globalscoreactivity__count')]
    for subject in subjects.order_by('-globalscoreactivity__count'):
        bar_chart.add(subject.name, subject.globalscoreactivity__count)
    return bar_chart.render_data_uri()
Ejemplo n.º 9
0
def outgoing_by_contact():
    """Render tree map of outgoing messages, grouped by user."""
    treemap = pygal.Treemap(style=clean_style_large_text, margin=0)
    for con in Recipient.objects.filter(is_archived=False):
        treemap.add(str(con),
                    SmsOutbound.objects.filter(recipient=con).count())

    return treemap.render(show_legend=False)
def topics_treemap(data, output):
    treemap = pygal.Treemap(style=LightStyle)
    treemap.title = "Tech Topics"

    for branch in data:
        treemap.add(branch, data[branch])

    treemap.render_to_file(output + '.svg')
    treemap.render_to_png(output + '.png')
Ejemplo n.º 11
0
def createTable(colors, categ_types_hash, tablename='attribute_table.html'):
    with open(tablename, 'w') as target:
        target.write('<!DOCTYPE html>\n<html>\n<head>\n<link rel="stylesheet" href="style.css">\n</head>\n<body>')
        for categ_name, types in categ_types_hash.items():
            table = pygal.Treemap(pretty_print=True)
            target.write('\n <h1 style="color:{};">{}</h1>\n'.format(colors[categ_name], categ_name))
            for d in types:
                table.add(d['label'], d['value'])
            target.write(table.render_table(transpose=True))
        target.write('\n</body>\n</html>')
Ejemplo n.º 12
0
def output_chart_tree(res_size_sum):
    style_tree = style.Style()
    chart = pygal.Treemap(title='区域在售面积:百平方',print_values=True,style=style_tree)
    l = []
    ll = []
    for k in sorted(list(res_size_sum.keys())):
        l.append(res_size_sum[k]) 
        ll.append(int(k/100))      
    for i in range(len(l)):
        chart.add(str(l[i]),ll[i])
    chart.render_to_file('tree.svg')
def plot_type_treemap_interactive(type_df, fp="type_treemap_pygal.pdf"):
    # type treemap
    style = DefaultStyle(
        legend_font_size=12,
        tooltip_font_size=12,
    )
    treemap = pygal.Treemap(style=style, margin=0)
    treemap.title = "Event Type"

    for idx, row in type_df.iterrows():
        treemap.add(row.name, [row["pct"]])

    treemap.render_to_file(fp, print_values=False)
Ejemplo n.º 14
0
def incoming_by_contact():
    """Render tree map of incoming messages, grouped by user."""
    treemap = pygal.Treemap(
        style=clean_style_large_text,
        margin=0,
    )
    for con in Recipient.objects.filter(is_archived=False):
        treemap.add(
            str(con),
            SmsInbound.objects.filter(sender_num=str(con.number)).count(),
        )

    return treemap.render(show_legend=False, )
Ejemplo n.º 15
0
def plot_topics_in_docs_treemap(topics_to_plot, doc_topic_file,
                                first_words_file, topicsindocs_treemap_out):
    """
    author: hennyu
    
    Arguments:
    topics_to_plot (int): how many of the top topics to plot for a document
    doc_topic_file (str): path to the doc topic matrix file
    first_words_file (str): path to the first words file
    topicsindocs_treemap_out (str): output directory for the treemaps
    """

    print("\nLaunched plot_topics_in_docs_treemap.")
    """
    Check directory.
    """
    if not (os.path.exists(topicsindocs_treemap_out)):
        os.makedirs(topicsindocs_treemap_out)

    doc_topics = pd.read_csv(doc_topic_file,
                             sep=",",
                             encoding="utf-8",
                             header=0)
    first_words = pd.read_csv(first_words_file,
                              sep=",",
                              encoding="utf-8",
                              header=None)

    for doc in doc_topics.iterrows():

        doc_id = doc[1].values[0]
        doc_topics = doc[1].values[1:]
        top_topics = sorted(range(len(doc_topics)),
                            key=lambda i: doc_topics[i])[-topics_to_plot:]
        """
        Plot treemaps of how the top words are distributed in each topic.
        """
        treemap = pygal.Treemap(print_values=True, print_labels=True)
        treemap.title = 'Topics-in-docs treemap for document ' + str(doc_id)

        for topic in top_topics:
            treemap.add(str(topic),
                        [{
                            "label": str(first_words.iloc[topic].values[1]),
                            "value": float("%.2f" % doc_topics[topic])
                        }])

        treemap.render_to_file(
            join(topicsindocs_treemap_out, "treemap_" + str(doc_id) + ".svg"))

    print("Done.")
Ejemplo n.º 16
0
def create_chart(data_frame):
    """ Create chart """
    ranking = sorted(numpy.array(data_frame.groupby('Publisher', as_index=False).sum()[['Publisher', 'Global_Sales']]).tolist(), key=lambda data: (data[1], data[0]), reverse=True)
    data = numpy.array(data_frame[['Publisher', 'Global_Sales', 'Name']]).tolist()

    chart = pygal.Treemap()

    for i in ranking[0:16]:
        chart.add(i[0], [{'value': j[1], 'label': j[2]} for j in data if j[0] == i[0]])

    chart.legend_at_bottom = True
    chart.truncate_legend = 19
    chart.legend_box_size = 16
    chart.render_to_file('publishers.svg')
Ejemplo n.º 17
0
def magasinier():
    cursor.execute("select * from demandes where demande_statut in ('chez le magasinier','cloturée');")
    demandes = list(cursor.fetchall())

    produits = []
    quantites = []
    users = []
    for row in demandes:
        cursor.execute("select produit_id,qte_demander from produits_demandes where demande_id = '{}'".format(row[0]))
        produits_id = list(cursor.fetchall())
        cursor.execute("select * from users where user_id = '{}'".format(row[1]))
        user = cursor.fetchone()
        users.append(user)
        for rows in produits_id:
            quantites.append(rows[1])
            cursor.execute("select * from produits where produit_id ='{}' ".format(rows[0]))
            produit = cursor.fetchone()
            produits.append(produit)


    cursor.execute("select * from produits;")
    Allproduits = list(cursor.fetchall())
    # charts ************************************
    treemap = pygal.Treemap()
    treemap.title = 'ARBRE DES DEMANDES DES ٍVALIDATEURS'

    cursor.execute("select distinct validateur_id from demandes")
    validateurs = cursor.fetchall()
    for validateur in validateurs:
        cursor.execute("select distinct users.user_nom,sum(produits_demandes.qte_demander) from users natural join demandes natural join produits_demandes where users.user_id = validateur_id and validateur_id = '{}' and demande_statut = 'cloturée' ".format(validateur[0]))
        nom_qte = cursor.fetchone()
        if nom_qte[1]:
            treemap.add(nom_qte[0], [nom_qte[1]])

    treemap.render()
    graph_data = treemap.render_data_uri()
    return render_template('magasinier.html',
                           current_user=getcookies('current_user'),
                           user_nom=getcookies('user_nom'),
                           user_prenom=getcookies('user_prenom'),
                           user_id=getcookies('user_id'),
                           demandes=demandes,
                           produits=produits,
                            Allproduits =Allproduits,
                           quantites=quantites,
                           users=users,
                           graph_data = graph_data,
                           )
Ejemplo n.º 18
0
def plot_words_in_topics_treemap(num_topics, words_to_plot, word_weights_file,
                                 wordsintopics_treemap_out):
    """
    author: hennyu
    
    Arguments:
    num_topics (int): number of topics
    words_to_plot (int): how many words to consider for each topic
    word_weights_file (str): path to the word weights file
    wordsintopics_treemap_out (str): output directory for the treemaps
    """

    print("\nLaunched plot_words_in_topics_treemap.")
    """
    Check directory.
    """
    if not (os.path.exists(wordsintopics_treemap_out)):
        os.makedirs(wordsintopics_treemap_out)

    word_weights = pd.read_csv(word_weights_file,
                               sep="\t",
                               encoding="utf-8",
                               header=None)

    for topic in word_weights.iloc[:, 0].unique():

        topic_words = word_weights.loc[word_weights.iloc[:, 0] ==
                                       topic].sort_values(by=2,
                                                          ascending=False)
        top_words = topic_words[:words_to_plot]
        """
        Plot treemaps of how the top words are distributed in each topic.
        """
        treemap = pygal.Treemap(print_values=True, print_labels=True)
        treemap.title = 'Words-in-topics treemap for topic ' + str(topic)

        for idx_word, word in top_words.iterrows():
            treemap.add(word.iloc[1], [{
                "label": word.iloc[1],
                "value": round(word.iloc[2])
            }])

        treemap.render_to_file(
            join(wordsintopics_treemap_out,
                 "treemap_tp" + str(topic) + ".svg"))

    print("Done.")
Ejemplo n.º 19
0
def createTable(data, title, tablename, colorsList):
    if tablename == None:
        target = open('attribute_table.html', 'w')
    else:
        target = open(tablename, 'w')
    target.truncate()
    target.write(
        '<!DOCTYPE html>\n<html>\n<head>\n<link rel="stylesheet" href="style.css">\n</head>\n<body>'
    )
    categories, types = createLabelsTreemap(data.index.levels,
                                            data.index.labels)
    it = 0

    for i in range(len(categories)):
        table = pygal.Treemap(pretty_print=True)
        target.write('\n <h1 style="color:' + colorsList[i] + ';">' +
                     categories[i] + '</h1>\n')
        for typ in types[i]:
            table.add(typ, data[it])
            it += 1
        target.write(table.render_table(transpose=True))
    target.write('\n</body>\n</html>')
    target.close()
Ejemplo n.º 20
0
 def render_to_response(self, context, **response_kwargs):
     dt_str = self.process_date(**self.kwargs).strftime("%m月%d")
     treemap = pygal.Treemap(config)
     treemap.title = f"{dt_str} novel corona virus".upper()
     for row in context["object_list"]:
         treemap.add(
             row.province,
             [
                 {
                     "value": row.cumulative_diagnosis,
                     "label": "累计确诊"
                 },
                 {
                     "value": row.cumulative_suspect,
                     "label": "累计疑似"
                 },
                 {
                     "value": row.cumulative_death,
                     "label": "累计死亡"
                 },
             ],
         )
     return treemap.render_django_response(**response_kwargs)
Ejemplo n.º 21
0
import csv
import pygal
data55 = csv.reader(open("2555.txt"))
count = 0
top10 = []
for i in data55:
    top10.append(i)
top10_2555 = top10[:10]
disease_name = []
num = []
for i in top10_2555:
    disease_name.append(i[0])
for i in top10_2555:
    num.append(i[1])
print(disease_name)
print(num)

line = pygal.Treemap()
line.title = "จำนวนผู้ป่วยปี2555 Top 10"
line.x_labels = ("")
line.add(disease_name[0], int(num[0]))
line.add(disease_name[1], int(num[1]))
line.add(disease_name[2], int(num[2]))
line.add(disease_name[3], int(num[3]))
line.add(disease_name[4], int(num[4]))
line.add(disease_name[5], int(num[5]))
line.add(disease_name[6], int(num[6]))
line.add(disease_name[7], int(num[7]))
line.add(disease_name[8], int(num[8]))
line.add(disease_name[9], int(num[9]))
line.render_to_file("top10_2555.svg")\
Ejemplo n.º 22
0
def main():
    '''
    This route loads main.html 
    - Request for user to input from sentence fill.
    '''
    DB_DATA.incident().to_sql(
        name='incident', if_exists='replace', con=db.engine, index=False
    )  #change if_exists to replace when resetting database to default
    DB_DATA.vehicle().to_sql(
        name='incident_vehicles',
        if_exists='replace',
        con=db.engine,
        index=False
    )  #change if_exists to replace when resetting database to default
    DB_DATA.tweet().to_sql(
        name='incident_tweet', if_exists='replace', con=db.engine, index=False
    )  #change if_exists to replace when resetting database to default

    if request.method == 'POST':
        city = request.form.get('city')
        vehicle = request.form.get('vehicle')
        vehicle2 = vehicle

        if vehicle == 'Car':
            vehicle = 'CAR'
        elif vehicle == 'Bus':
            vehicle = 'BUS'
        elif vehicle == 'Van':
            vehicle = 'VAN'
        elif vehicle == 'Taxi':
            vehicle = 'TAXI'
        elif vehicle == 'Truck':
            vehicle = 'TRUCK'
        elif vehicle == 'Motorcycle':
            vehicle = 'MOTORCYCLE'
        elif vehicle == 'Delivery Van':
            vehicle = 'DELIVERYVAN'
        elif vehicle == 'Jeep':
            vehicle = 'PUJ'
        elif vehicle == 'Closed Van':
            vehicle = 'CLOSEDVAN'
        elif vehicle == 'Wing Van':
            vehicle = 'WINGVAN'
        elif vehicle == 'Pickup':
            vehicle = 'PICKUP'
        elif vehicle == 'Dump Truck':
            vehicle = 'DUMPTRUCK'
        elif vehicle == 'Elf Truck':
            vehicle = 'ELFTRUCK'
        elif vehicle == 'UV Express':
            vehicle = 'UVEXPRESS'
        elif vehicle == 'Trailer Truck':
            vehicle = 'TRAILERTRUCK'
        elif vehicle == 'Armored Van':
            vehicle = 'ARMOREDVAN'

        if city == 'Metro Manila':
            query1 = db.engine.execute(f'''
                                       SELECT i.longitude, i.latitude, i.date
                                       FROM incident i JOIN incident_vehicles v ON i.id = v.incident_id
                                       WHERE v.vehicle = '{vehicle}';
                                       ''').fetchall()
        else:
            query1 = db.engine.execute(f'''
                                       SELECT i.longitude, i.latitude, i.date, i.city
                                       FROM incident i JOIN incident_vehicles v ON i.id = v.incident_id
                                       WHERE v.vehicle = '{vehicle}' and i.city = '{city}';
                                       ''').fetchall()
        longs = []
        lats = []
        for row in query1:
            if '2020' in row.date:
                longs.append(row.longitude)
                lats.append(row.latitude)

        if city == 'Metro Manila':
            query2 = db.engine.execute(f'''
                                       SELECT i.location, i.date, COUNT(*) as count
                                       FROM incident i JOIN incident_vehicles v ON i.id = v.incident_id
                                       WHERE v.vehicle = '{vehicle}'
                                       GROUP BY i.location ORDER BY COUNT(*) DESC LIMIT 15;
                                       ''').fetchall()
        else:
            query2 = db.engine.execute(f'''
                                       SELECT i.location, i.date, i.city, COUNT(*) as count
                                       FROM incident i JOIN incident_vehicles v ON i.id = v.incident_id
                                       WHERE v.vehicle = '{vehicle}' and i.city = '{city}'
                                       GROUP BY i.location ORDER BY COUNT(*) DESC LIMIT 15;
                                       ''').fetchall()
        chart2 = pygal.HorizontalBar(style=RedBlueStyle)
        chart2.show_legend = False
        locations = []
        counts = []
        query2 = reversed(query2)
        for row in query2:
            if '2020' in row.date:
                locations.append(row.location)
                counts.append(row.count)
        chart2.x_labels = tuple(locations)
        chart2.add('', counts)
        chart2_data = chart2.render_data_uri()

        if city == 'Metro Manila':
            query3 = db.engine.execute(f'''
                                       SELECT i.id, i.date, COUNT(*) as count
                                       FROM incident i JOIN incident_vehicles v ON i.id = v.incident_id
                                       WHERE v.vehicle = '{vehicle}'
                                       GROUP BY i.date
                                       ORDER BY i.date;
                                       ''').fetchall()
        else:
            query3 = db.engine.execute(f'''
                                       SELECT i.id, i.date, i.city, COUNT(*) as count
                                       FROM incident i JOIN incident_vehicles v ON i.id = v.incident_id
                                       WHERE v.vehicle = '{vehicle}' and i.city = '{city}'
                                       GROUP BY i.date
                                       ORDER BY i.date;
                                       ''').fetchall()
        chart3 = pygal.Line(x_label_rotation=45)
        dates = []
        counts = []
        isComplete = [False, False, False, False, False, False]
        for row in query3:
            if '2020' in row.date:
                if '2020-01' in row.date and isComplete[0] == False:
                    dates.append(row.date)
                    isComplete[0] = True
                elif '2020-03' in row.date and isComplete[1] == False:
                    dates.append(row.date)
                    isComplete[1] = True
                elif '2020-05' in row.date and isComplete[2] == False:
                    dates.append(row.date)
                    isComplete[2] = True
                elif '2020-07' in row.date and isComplete[3] == False:
                    dates.append(row.date)
                    isComplete[3] = True
                elif '2020-09' in row.date and isComplete[4] == False:
                    dates.append(row.date)
                    isComplete[4] = True
                elif '2020-11' in row.date and isComplete[5] == False:
                    dates.append(row.date)
                    isComplete[5] = True
                else:
                    dates.append('')

                counts.append(row.count)
        chart3.x_labels = dates
        chart3.add('', counts)
        chart3.show_legend = False
        chart3_data = chart3.render_data_uri()

        if city == 'Metro Manila':
            query4 = db.engine.execute(f'''
                                       SELECT i.direction, i.date, COUNT(*) as count
                                       FROM incident i JOIN incident_vehicles v ON i.id = v.incident_id
                                       WHERE v.vehicle = '{vehicle}'
                                       GROUP BY i.direction;
                                       ''').fetchall()
        else:
            query4 = db.engine.execute(f'''
                                       SELECT i.direction, i.date, i.city, COUNT(*) as count
                                       FROM incident i JOIN incident_vehicles v ON i.id = v.incident_id
                                       WHERE v.vehicle = '{vehicle}' and i.city = '{city}'
                                       GROUP BY i.direction;
                                       ''').fetchall()

        chart4 = pygal.Pie()
        for row in query4:
            if '2020' in row.date:
                chart4.add(row.direction, row.count)
        chart4_data = chart4.render_data_uri()

        if city == 'Metro Manila':
            query5 = db.engine.execute('''
                                       SELECT v.vehicle, i.date, COUNT(*) as count
                                       FROM incident i JOIN incident_vehicles v ON i.id = v.incident_id
                                       GROUP BY v.vehicle ORDER BY COUNT(*) DESC LIMIT 30;
                                       ''').fetchall()
        else:
            query5 = db.engine.execute(f'''
                                       SELECT v.vehicle, i.date, i.city, COUNT(*) as count
                                       FROM incident i JOIN incident_vehicles v ON i.id = v.incident_id
                                       WHERE i.city = '{city}'
                                       GROUP BY v.vehicle ORDER BY COUNT(*) DESC LIMIT 30;
                                       ''').fetchall()
        chart5 = pygal.Treemap(legend_at_bottom=True)
        for row in query5:
            if '2020' in row.date:
                chart5.add(row.vehicle, row.count)
        chart5_data = chart5.render_data_uri()

        return render_template('main.html',
                               city=city,
                               vehicle=vehicle2,
                               longs=longs,
                               lats=lats,
                               chart2_data=chart2_data,
                               chart3_data=chart3_data,
                               chart4_data=chart4_data,
                               chart5_data=chart5_data)

    query1 = db.engine.execute('''
                               SELECT i.longitude, i.latitude, i.date
                               FROM incident i JOIN incident_vehicles v ON i.id = v.incident_id
                               WHERE v.vehicle = 'CAR';
                               ''').fetchall()
    longs = []
    lats = []
    for row in query1:
        if '2020' in row.date:
            longs.append(row.longitude)
            lats.append(row.latitude)

    query2 = db.engine.execute('''
                               SELECT i.location, i.date, COUNT(*) as count
                               FROM incident i JOIN incident_vehicles v ON i.id = v.incident_id
                               WHERE v.vehicle = 'CAR'
                               GROUP BY i.location ORDER BY COUNT(*) DESC LIMIT 15;
                               ''').fetchall()
    chart2 = pygal.HorizontalBar(style=RedBlueStyle)
    chart2.show_legend = False
    locations = []
    counts = []
    query2 = reversed(query2)
    for row in query2:
        if '2020' in row.date:
            locations.append(row.location)
            counts.append(row.count)
    chart2.x_labels = tuple(locations)
    chart2.add('', counts)
    chart2_data = chart2.render_data_uri()

    query3 = db.engine.execute('''
                               SELECT i.id, i.date, COUNT(*) as count
                               FROM incident i JOIN incident_vehicles v ON i.id = v.incident_id
                               WHERE v.vehicle = 'CAR'
                               GROUP BY i.date
                               ORDER BY i.date;
                               ''').fetchall()
    chart3 = pygal.Line(x_label_rotation=45)
    dates = []
    counts = []
    isComplete = [False, False, False, False, False, False]
    for row in query3:
        if '2020' in row.date:
            if '2020-01' in row.date and isComplete[0] == False:
                dates.append(row.date)
                isComplete[0] = True
            elif '2020-03' in row.date and isComplete[1] == False:
                dates.append(row.date)
                isComplete[1] = True
            elif '2020-05' in row.date and isComplete[2] == False:
                dates.append(row.date)
                isComplete[2] = True
            elif '2020-07' in row.date and isComplete[3] == False:
                dates.append(row.date)
                isComplete[3] = True
            elif '2020-09' in row.date and isComplete[4] == False:
                dates.append(row.date)
                isComplete[4] = True
            elif '2020-11' in row.date and isComplete[5] == False:
                dates.append(row.date)
                isComplete[5] = True
            else:
                dates.append('')

            counts.append(row.count)
    chart3.x_labels = dates
    chart3.add('', counts)
    chart3.show_legend = False
    chart3_data = chart3.render_data_uri()

    query4 = db.engine.execute('''
                               SELECT i.direction, i.date, COUNT(*) as count
                               FROM incident i JOIN incident_vehicles v ON i.id = v.incident_id
                               WHERE v.vehicle = 'CAR'
                               GROUP BY i.direction;
                               ''').fetchall()
    chart4 = pygal.Pie()
    for row in query4:
        if '2020' in row.date:
            chart4.add(row.direction, row.count)
    chart4_data = chart4.render_data_uri()

    query5 = db.engine.execute('''
                               SELECT v.vehicle, i.date, COUNT(*) as count
                               FROM incident i JOIN incident_vehicles v ON i.id = v.incident_id
                               GROUP BY v.vehicle ORDER BY COUNT(*) DESC LIMIT 30;
                               ''').fetchall()
    chart5 = pygal.Treemap(legend_at_bottom=True)
    for row in query5:
        if '2020' in row.date:
            chart5.add(row.vehicle, row.count)
    chart5_data = chart5.render_data_uri()

    return render_template('main.html',
                           city='Metro Manila',
                           vehicle='Car',
                           longs=longs,
                           lats=lats,
                           chart2_data=chart2_data,
                           chart3_data=chart3_data,
                           chart4_data=chart4_data,
                           chart5_data=chart5_data)
Ejemplo n.º 23
0
def make_graph(graph_style):
    msg = ""
    graph_data = ""
    rv = ran.randint(3, 60)
    try:
        if graph_style == "Line":
            graph = pygal.Line(fill=True,
                               interpolate='cubic',
                               style=DarkColorizedStyle)
            graph.title = "Timeline year soda sales in mil"
            graph.x_labels = ["2000", "2001", "2003", "2004", "2005"]
            graph.add("Pepsi", [rv, rv + 20, rv - 5, rv + 3, rv + 12])
            graph.add("Coca Cola", [rv + 5, rv + 18, rv - 5, rv + 20, rv + 25])
            graph.add("Sprite", [rv, rv + 6, rv - 9, rv + 5, rv + 12])
            graph.add("Orange", [rv + 4, rv + 30, rv - 10, rv, rv + 8])
            graph_data = graph.render_data_uri()
            msg = "Line"
        elif graph_style == "Bar":
            graph = pygal.Bar(fill=True,
                              interpolate='cubic',
                              style=DarkColorizedStyle)
            graph.title = "Timeline year soda sales in mil"
            graph.x_labels = ["2000", "2001", "2003", "2004", "2005"]
            graph.add("Pepsi", [rv, rv + 20, rv - 5, rv + 3, rv + 12])
            graph.add("Coca Cola", [rv + 5, rv + 18, rv - 5, rv + 20, rv + 25])
            graph.add("Sprite", [rv, rv + 6, rv - 9, rv + 5, rv + 12])
            graph.add("Orange", [rv + 4, rv + 30, rv - 10, rv, rv + 8])
            graph_data = graph.render_data_uri()
            msg = "Bar"
        elif graph_style == "Treemap":
            treemap = pygal.Treemap(fill=True,
                                    interpolate='cubic',
                                    style=DarkColorizedStyle)
            treemap.title = 'Binary TreeMap'
            treemap.add('A', [2, 1, 12, 4, 2, 1, 1, 3, 12, 3, 4, None, 9])
            treemap.add('B', [4, 2, 5, 10, 3, 4, 2, 7, 4, -10, None, 8, 3, 1])
            treemap.add('C', [3, 8, 3, 3, 5, 3, 3, 5, 4, 12])
            treemap.add('D', [23, 18])
            treemap.add('E',
                        [1, 2, 1, 2, 3, 3, 1, 2, 3, 4, 3, 1, 2, 1, 1, 1, 1, 1])
            treemap.add('F', [31])
            treemap.add('G', [5, 9.3, 8.1, 12, 4, 3, 2])
            treemap.add('H', [12, 3, 3])
            graph_data = treemap.render_data_uri()
            msg = " Treemap"
        elif graph_style == "Gauge":
            gauge_chart = pygal.Gauge(human_readable=True,
                                      fill=True,
                                      interpolate='cubic',
                                      style=DarkColorizedStyle)
            gauge_chart.title = 'DeltaBlue V8 benchmark results'
            gauge_chart.range = [0, 10000]
            gauge_chart.add('Chrome', 8212)
            gauge_chart.add('Firefox', 8099)
            gauge_chart.add('Opera', 2933)
            gauge_chart.add('IE', 41)
            graph_data = gauge_chart.render_data_uri()
            msg = "Gauge"
        elif graph_style == "SolidGauge":
            gauge = pygal.SolidGauge(inner_radius=0.70,
                                     fill=True,
                                     interpolate='cubic',
                                     style=DarkColorizedStyle)
            percent_formatter = lambda x: '{:.10g}%'.format(x)
            dollar_formatter = lambda x: '{:.10g}$'.format(x)
            gauge.value_formatter = percent_formatter

            gauge.add('Series 1', [{
                'value': 225000,
                'max_value': 1275000
            }],
                      formatter=dollar_formatter)
            gauge.add('Series 2', [{'value': 110, 'max_value': 100}])
            gauge.add('Series 3', [{'value': 50}])
            gauge.add('Series 4', [{
                'value': 51,
                'max_value': 100
            }, {
                'value': 12,
                'max_value': 100
            }])
            gauge.add('Series 5', [{'value': 79, 'max_value': 100}])
            gauge.add('Series 6', 99)
            gauge.add('Series 7', [{'value': 100, 'max_value': 100}])
            graph_data = gauge.render_data_uri()
            msg = "SolidGauge"
        elif graph_style == "XY":
            xy_chart = pygal.XY(fill=True,
                                interpolate='cubic',
                                style=DarkColorizedStyle)
            xy_chart.title = 'XY Cosinus'
            xy_chart.add('x = cos(y)',
                         [(cos(x / 10.), x / 10.) for x in range(-50, 50, 5)])
            xy_chart.add('y = cos(x)',
                         [(x / 10., cos(x / 10.)) for x in range(-50, 50, 5)])
            xy_chart.add('x = 1', [(1, -5), (1, 5)])
            xy_chart.add('x = -1', [(-1, -5), (-1, 5)])
            xy_chart.add('y = 1', [(-5, 1), (5, 1)])
            xy_chart.add('y = -1', [(-5, -1), (5, -1)])
            graph_data = xy_chart.render_data_uri()
            msg = "XY"
        elif graph_style == "Multi-series pie":
            pie_chart = pygal.Pie(fill=True,
                                  interpolate='cubic',
                                  style=DarkColorizedStyle)
            pie_chart.title = 'Browser usage by version in February 2012 (in %)'
            pie_chart.add('IE', [5.7, 10.2, 2.6, 1])
            pie_chart.add('Firefox',
                          [.6, 16.8, 7.4, 2.2, 1.2, 1, 1, 1.1, 4.3, 1])
            pie_chart.add('Chrome', [.3, .9, 17.1, 15.3, .6, .5, 1.6])
            pie_chart.add('Safari', [4.4, .1])
            pie_chart.add('Opera', [.1, 1.6, .1, .5])
            graph_data = pie_chart.render_data_uri()
            msg = "Multi-series pie"

    except Exception as e:
        msg = e
    t = (msg, graph_data)
    return t
Ejemplo n.º 24
0
def main():
    """ Get data from CSV and manage data """
    #Manage File from .csv >>> DataFrame(by using pandas)
    data = pandas.read_csv('Health_AnimalBites.csv')

    #Clean data
    data_group = data['SpeciesIDDesc'].value_counts()
    print(data_group)

    #Species of dog
    dog_specie = data[data['SpeciesIDDesc'] == 'Dog'].groupby(['BreedIDDesc']).size()
    print(dog_specie)

    #Gender of dog
    dog_gen = data[data['SpeciesIDDesc'] == 'Dog'].groupby(['GenderIDDesc']).size()
    print(dog_gen)

    #Color of dog
    dog_color = data[data['SpeciesIDDesc'] == 'Dog'].groupby(['color']).size()
    print("---Color of Dog---", dog_color, sep="/n")

    #color of Pitbull
    pit_color = data[data['BreedIDDesc'] == 'Pit Bull'].groupby(['color']).size()
    print("---Color of Pit bull---", pit_color, sep="/n")


    """
    Show data in graph(by using pygal)
    """

    #Show most animal that bite people in U.S.A.(in pie chart)
    animal = data_group.sort_values(ascending=False).to_dict()
    sol = pygal.SolidGauge(half_pie=True, inner_radius=0.7)
    for i in animal:
        sol.add(i, animal[i])
    sol.title = 'Most Animal that Bite People'
    sol.render_to_file('animals.svg')
    sol.render_in_browser()

    #Show top 10 species dog(in treemap chart)
    animalz = dog_specie.sort_values(ascending=False).to_dict()
    tree = pygal.Treemap()
    for i in animalz:
        tree.add(i, animalz[i])
    tree.title = 'Species of Dogs that Bite People'
    tree.render_to_file('speciesdog.svg')
    tree.render_in_browser()

    #Show color of Dog(in horizontal bar chart)
    color_dog = dog_color.sort_values(ascending=False)[:10].to_dict()
    bar = pygal.HorizontalBar()
    bar.title = 'Top 10 colors of Dog'
    for i in color_dog:
        bar.add(i, color_dog[i])
    bar.render_to_file('top10colorsdog.svg')
    bar.render_in_browser()
    
    #Show color of Pitbull(in horizontal bar chart)
    color_pit = pit_color.sort_values(ascending=False)[:10].to_dict()
    bar_ = pygal.HorizontalBar()
    bar_.title = 'Top 10 colors of Pitbull'
    for i in color_pit:
        bar_.add(i, color_pit[i])
    bar_.render_to_file('top10colorspitbull.svg')
    bar_.render_in_browser()

    #Area
    zip_code = data[data['SpeciesIDDesc'] == 'Dog'].groupby(['victim_zip']).size().sort_values(ascending=False)
Ejemplo n.º 25
0
        plot_name = util.get_metrics_name(metric)
        dateline = create_dateline(timeseries[metric], plot_name=plot_name)

        file_path = "{}/{}/timeseries_{}.svg".format(PATH_TO_GRAPHS, orgname, metric)
        os.makedirs("{}/{}".format(PATH_TO_GRAPHS, orgname), exist_ok=True)

        dateline.render_to_file(file_path)

    """
    Create Binary Tree map for breakdowns
    ORG - WEEKLY and ORG - MONTHLY
    """
    latest_weekly_report = json.load(open(all_weekly_metrics_files[-1]))
    print(f"Creating weekly binary tree map of breakdowns for {org}")
    for metric in latest_weekly_report["data"]:
        treemap = pygal.Treemap()

        treemap.title = util.get_metrics_name(metric)

        # Add blocks in decreasing order of their count
        items = list(latest_weekly_report["data"][metric]["diff_breakdown"].items())
        items.sort(key=operator.itemgetter(1), reverse=True)

        if len(items):
            for item, value in items:
                if value > 0:
                    treemap.add(item, [value])
            file_path = "{}/{}/treemap_weekly_{}.svg".format(PATH_TO_GRAPHS, orgname, metric)
            os.makedirs("{}/{}".format(PATH_TO_GRAPHS, orgname), exist_ok=True)
            treemap.render_to_file(file_path)
Ejemplo n.º 26
0
 def __init__(self, **kwargs):
     self.chart = pygal.Treemap(**kwargs)