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)
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)
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)
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)
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)
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)
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))
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()
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')
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>')
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)
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, )
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.")
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')
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, )
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.")
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()
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)
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")\
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)
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
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)
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)
def __init__(self, **kwargs): self.chart = pygal.Treemap(**kwargs)