def fnCreate_Chart_MultiLine(df): pd.options.html.border = 1 plot = Line(df, title="Likes vs retweets visualization", legend="top_left", xlabel='Date', ylabel='Count') plot.logo = None script, div = components(plot, CDN) return script, div
def fnCreate_Chart_Line(df): pd.options.html.border = 1 plot = Line(df, title="Date wise tweet graph", legend=False, xlabel='Date', ylabel='Count') #, 'green', 'blue'] plot.logo = None script, div = components(plot, CDN) return script, div
def fnCreate_Chart_MultiLine(df,strS,j=1): pd.options.html.border=1 sL=False if j ==1: sL="top_center" plot = Line(df, title="Average of Ticket Price Date wise" + strS, legend=sL, xlabel='Travel Date',ylabel='Average Ticket Price') plot.legend.label_text_font_size = "7pt" plot.legend.orientation = "horizontal" plot.legend.click_policy="hide" plot.logo=None script, div = components(plot,CDN) return script, div
def HLevelLine(): # sample = pd.read_table('http://kelesidis.de/static/data/sample.txt') # Use the Sample Data # Make a list with the months ys = [month for month in sample.columns[1:]] TOOLS = 'pan,wheel_zoom,hover,crosshair,resize,reset' TOOLTIPS = [("Year", "$~x"), ("Temp", "$y")] # make our line configurations # import from df, x= the Year column, y = the ys list we created above p = Line(sample, x = 'Year', y = ys, title = "Hight Level Bokeh Line Chart", legend = "bottom_left", ylabel = 'Temp', tools = TOOLS, width = 600, height = 450, responsive = True) # hover tool configuration p_hover = p.select(HoverTool) p_hover.tooltips = TOOLTIPS p.logo = None return p
def stats_comp(request, date_x=datetime.datetime.strftime(datetime.date.today() - datetime.timedelta(days=1), '%Y-%m-%d'), date_y=datetime.datetime.strftime(datetime.date.today(), '%Y-%m-%d')): start_date = date_x end_date = date_y stats_data = Cost.objects.filter(publish__range=(start_date, end_date), user=request.user) budget_title = [] publish_data = [] url = [] days = [] start_date_time_strp = datetime.datetime.strptime(date_x, '%Y-%m-%d') end_date_time_strp = datetime.datetime.strptime(date_y, '%Y-%m-%d') def cost_per_day(start, end): while start < end: yield start start += datetime.timedelta(days=1) for time in cost_per_day(start_date_time_strp, end_date_time_strp): val = Cost.objects.filter(publish=time, user=request.user).aggregate(Sum('value'))['value__sum'] if val is not None: days.append(float(val)) else: days.append(0) if not days: script_3 = "<h2>Aby wykres się pojawił, musisz dodać wydatek oraz kategorie</h2>" div_3 = "<h1>Brak wydatków!</h1>" else: cost_data = { 'Suma': days, 'Dni': [x for x in range(len(days))], } p = Line(cost_data, ylabel='Suma', xlabel='Dni', plot_width=1150, plot_height=300, legend=None) p.logo = None p.toolbar_location = None script_3, div_3 = components(p, CDN) for item in stats_data.values('publish', 'budget_id'): budget_title.append(Budget.objects.get(id=item['budget_id']).title) publish_data.append(str(item['publish'])) url.append(str(item['publish']).replace('-', '/')) cost_data = zip(stats_data, budget_title, publish_data, url) categories_title = [] categories_data = [] category_percent = [] for item in Category.objects.filter(user=request.user).values('title', 'id'): val = Cost.objects.filter(publish__range=(start_date, end_date), user=request.user, category_id=item['id']).aggregate(Sum('value'))['value__sum'] if val is not None: categories_data.append(val) categories_title.append(item['title']) if not categories_title: script = "<h2>Aby wykres się pojawił, musisz dodać wydatek oraz kategorie</h2>" div = "<h1>Brak wydatków!</h1>" else: for item in categories_data: val = 100 * float(item / (sum(categories_data))) category_percent.append(int(val)) cat_data = { 'money': [float(x) for x in categories_data], 'labels': categories_title} p = Donut(cat_data, values='money', label='labels', plot_width=390, plot_height=400, legend=None, responsive=True) p.logo = None p.toolbar_location = None script, div = components(p, CDN) categories_res = zip(categories_title, categories_data, category_percent) data_sum = Cost.objects.filter(publish__range=(start_date, end_date), user=request.user).aggregate(Sum('value'))[ 'value__sum'] data_avg = Cost.objects.filter(publish__range=(start_date, end_date), user=request.user).aggregate(Avg('value'))[ 'value__avg'] budget_title = [] budget_values = [] budget_id = [] budget_percent = [] for item in Budget.objects.values('title', 'id'): val = Cost.objects.filter(budget_id=item['id'], publish__range=(start_date, end_date), user=request.user).aggregate(Sum('value'))['value__sum'] if val is not None: budget_title.append(item['title']) budget_values.append(val) budget_id.append(item['id']) if not budget_title: script_2 = "<h2>Aby wykres się pojawił, musisz dodać wydatek oraz kategorie</h2>" div_2 = "<h1>Brak wydatków!</h1>" else: for item in budget_values: val = 100 * float(item / (sum(budget_values))) budget_percent.append(int(val)) budget_data = { 'money': [float(x) for x in budget_values], 'labels': budget_title} p = Donut(budget_data, values='money', label='labels', plot_width=390, plot_height=400, legend=False, responsive=True) p.logo = None p.toolbar_location = None script_2, div_2 = components(p, CDN) comp_budget_data = zip(budget_title, budget_values, budget_id, budget_percent) if request.method == 'POST': form = comp_form(request.POST) if form.is_valid(): cd = form.cleaned_data return HttpResponseRedirect(reverse('core_sm:stats_comp', args=(cd['date_x'], cd['date_y']))) else: form = comp_form() budgets_sum = Budget.objects.filter(publish__range=(start_date, end_date), user=request.user).aggregate(Sum('value'))['value__sum'] total_cost_per_budget = sum(budget_values) try: total_budget = budgets_sum - total_cost_per_budget except TypeError: total_budget = 0 return render(request, 'core_sm/costs/stats_comp.html', {'cost_data': cost_data, 'data_sum': data_sum, 'data_avg': data_avg, 'script': mark_safe(script), 'div': mark_safe(div), 'script_2': mark_safe(script_2), 'div_2': mark_safe(div_2), 'script_3': mark_safe(script_3), 'div_3': mark_safe(div_3), 'categories_res': categories_res, 'form': form, 'date_x': date_x, 'date_y': date_y, 'comp_budget_data': comp_budget_data, 'total_cost_per_budget': total_cost_per_budget, 'total_budget': total_budget, 'budgets_sum': budgets_sum })