def target_plan(context): """ Displays form and renders plot for visibility calculation. Using this templatetag to render a plot requires that the context of the parent view have values for start_time, end_time, and airmass. """ request = context['request'] plan_form = TargetVisibilityForm() visibility_graph = '' if all(request.GET.get(x) for x in ['start_time', 'end_time']): plan_form = TargetVisibilityForm({ 'start_time': request.GET.get('start_time'), 'end_time': request.GET.get('end_time'), 'airmass': request.GET.get('airmass'), 'target': context['object'] }) if plan_form.is_valid(): start_time = parse(request.GET['start_time']) end_time = parse(request.GET['end_time']) if request.GET.get('airmass'): airmass_limit = float(request.GET.get('airmass')) else: airmass_limit = None visibility_data = get_sidereal_visibility(context['object'], start_time, end_time, 10, airmass_limit) plot_data = [ go.Scatter(x=data[0], y=data[1], mode='lines', name=site) for site, data in visibility_data.items() ] layout = go.Layout(yaxis=dict(autorange='reversed')) visibility_graph = offline.plot( go.Figure(data=plot_data, layout=layout), output_type='div', show_link=False ) return { 'form': plan_form, 'target': context['object'], 'visibility_graph': visibility_graph }
def target_plan(context): #request = context['request'] start_time = datetime.datetime.now() end_time = datetime.datetime.now() + datetime.timedelta(days=1) airmass = 3.0 plan_form = TargetVisibilityForm({ 'start_time': start_time, 'end_time': end_time, 'airmass': airmass }) visibility_graph = '' visibility_data = get_visibility(context['object'], start_time, end_time, 15, airmass) plot_data = [ go.Scatter( x=data[0], y=data[1], mode='lines', name=site, ) for site, data in visibility_data.items() ] layout = go.Layout(yaxis=dict(range=[airmass, 1.0]), margin=dict(l=20, r=10, b=30, t=40), hovermode='closest', width=600, height=300, autosize=True) visibility_graph = offline.plot(go.Figure(data=plot_data, layout=layout), output_type='div', show_link=False) return { 'form': plan_form, 'target': context['object'], 'visibility_graph': visibility_graph }
def target_plan(context): request = context['request'] plan_form = TargetVisibilityForm() visibility_graph = '' if all(request.GET.get(x) for x in ['start_time', 'end_time']): plan_form = TargetVisibilityForm({ 'start_time': request.GET.get('start_time'), 'end_time': request.GET.get('end_time'), 'airmass': request.GET.get('airmass') }) if plan_form.is_valid(): start_time = parse(request.GET['start_time']) end_time = parse(request.GET['end_time']) if request.GET.get('airmass'): airmass_limit = float(request.GET.get('airmass')) else: airmass_limit = None visibility_data = get_visibility(context['object'], start_time, end_time, 10, airmass_limit) plot_data = [ go.Scatter(x=data[0], y=data[1], mode='lines', name=site) for site, data in visibility_data.items() ] layout = go.Layout(yaxis=dict(autorange='reversed')) visibility_graph = offline.plot(go.Figure(data=plot_data, layout=layout), output_type='div', show_link=False) return { 'form': plan_form, 'target': context['object'], 'visibility_graph': visibility_graph }
def airmass_collapse(target): start_time = datetime.datetime.now() end_time = start_time + datetime.timedelta(days=1) interval = 30 #min airmass_limit = 3.0 plan_form = TargetVisibilityForm({ 'start_time': start_time, 'end_time': end_time, 'airmass': airmass_limit }) obj = Target obj.ra = target.ra obj.dec = target.dec obj.epoch = 2000 obj.type = 'SIDEREAL' visibility_data = get_24hr_airmass(obj, start_time, interval, airmass_limit) plot_data = [ go.Scatter( x=data[0], y=data[1], mode='lines', name=site, ) for site, data in visibility_data.items() if 'LCO' in site ] layout = go.Layout(yaxis=dict(range=[airmass_limit, 1.0]), margin=dict(l=20, r=10, b=30, t=40), hovermode='closest', width=250, height=200, showlegend=False) visibility_graph = offline.plot(go.Figure(data=plot_data, layout=layout), output_type='div', show_link=False) return {'form': plan_form, 'target': target, 'figure': visibility_graph}
def target_plan(context, fast_render=False, width=600, height=400, background=None, label_color=None, grid=True): """ Displays form and renders plot for visibility calculation. Using this templatetag to render a plot requires that the context of the parent view have values for start_time, end_time, and airmass. :param fast_render: Render the plot on page load, defaults to the next 24hrs and 2.5 airmass :type fast_render: bool :param width: Width of generated plot :type width: int :param height: Height of generated plot :type width: int :param background: Color of the background of generated plot. Can be rgba or hex string. :type background: str :param label_color: Color of labels/tick labels. Can be rgba or hex string. :type label_color: str :param grid: Whether to show grid lines. :type grid: bool """ request = context['request'] plan_form = TargetVisibilityForm() visibility_graph = '' if all(request.GET.get(x) for x in ['start_time', 'end_time']) or fast_render: plan_form = TargetVisibilityForm({ 'start_time': request.GET.get('start_time', datetime.utcnow()), 'end_time': request.GET.get('end_time', datetime.utcnow() + timedelta(days=1)), 'airmass': request.GET.get('airmass', 2.5), 'target': context['object'] }) if plan_form.is_valid(): start_time = plan_form.cleaned_data['start_time'] end_time = plan_form.cleaned_data['end_time'] airmass_limit = plan_form.cleaned_data['airmass'] visibility_data = get_sidereal_visibility(context['object'], start_time, end_time, 10, airmass_limit) plot_data = [ go.Scatter(x=data[0], y=data[1], mode='lines', name=site) for site, data in visibility_data.items() ] layout = go.Layout(yaxis=dict(autorange='reversed'), width=width, height=height, paper_bgcolor=background, plot_bgcolor=background) layout.legend.font.color = label_color fig = go.Figure(data=plot_data, layout=layout) fig.update_yaxes(showgrid=grid, color=label_color, showline=True, linecolor=label_color, mirror=True) fig.update_xaxes(showgrid=grid, color=label_color, showline=True, linecolor=label_color, mirror=True) visibility_graph = offline.plot(fig, output_type='div', show_link=False) return { 'form': plan_form, 'target': context['object'], 'visibility_graph': visibility_graph }