コード例 #1
0
def create_plot(value_ds, index_ds, horizontal_val_ds, horizontal_index_ds, int_val_ds, int_index_ds):
    xmapper = LinearMapper(range=DataRange1D(index_ds))
    value_mapper = LinearMapper(range=DataRange1D(value_ds))
    
    xmapper_val = LinearMapper(range=DataRange1D(horizontal_index_ds))
    horizontal_val_mapper =  LinearMapper(range=DataRange1D(horizontal_val_ds))
    
    int_xmapper = LinearMapper(range=DataRange1D(int_index_ds))
    int_val_mapper = LinearMapper(range=DataRange1D(int_val_ds))
    
    value_plot = FilledLinePlot(index = index_ds, value = value_ds,
                                index_mapper = xmapper,
                                value_mapper = value_mapper,
                                line_color = "black",
                                render_style='connectedhold',
                                fill_color = (0,0,1,0.3),
                                antialias=False)
    add_default_grids(value_plot)
    value_plot.overlays.append(PlotAxis(value_plot, orientation='left'))
    value_plot.overlays.append(PlotAxis(value_plot, orientation='bottom', title='steps backwards'))
    value_plot.overlays.append(PlotLabel('position of max power: vertical axes', component=value_plot, font = 'swiss 16', overlay_position='top'))

    
    value_plot.padding = 50
    

    horizontal_pos_plot = FilledLinePlot(index = horizontal_index_ds, value = horizontal_val_ds,
                                index_mapper = xmapper_val,
                                value_mapper = horizontal_val_mapper,
                                line_color = "black",
                                render_style='connectedhold',
                                fill_color = (0,1,0,0.3),
                                antialias=False)
    
    horizontal_pos_plot.padding = 50
    add_default_grids(horizontal_pos_plot)
    horizontal_pos_plot.overlays.append(PlotAxis(horizontal_pos_plot, orientation='left'))
    horizontal_pos_plot.overlays.append(PlotAxis(horizontal_pos_plot, orientation='bottom', title='steps backwards'))
    horizontal_pos_plot.overlays.append(PlotLabel('position of max power: horizontal axes', component=horizontal_pos_plot, font = 'swiss 16', overlay_position='top'))
    
    intensity_plot = FilledLinePlot(index = int_index_ds, value = int_val_ds,
                            index_mapper = int_xmapper,
                            value_mapper = int_val_mapper,
                            line_color = "black",
                            fill_color = (0,0,0,0.4),
                            antialias=False)
    intensity_plot.padding = 50
    add_default_grids(intensity_plot)
    intensity_plot.overlays.append(PlotAxis(intensity_plot, orientation='left', title= 'Power [uW]'))
    intensity_plot.overlays.append(PlotAxis(intensity_plot, orientation='bottom', title='steps backwards'))
    intensity_plot.y_axis.tick_label_formatter = lambda x: ('%.1e'%(x*1e6))
    intensity_plot.overlays.append(PlotLabel('Transmission power', component=intensity_plot, font = 'swiss 16', overlay_position='top'))
    
    
    container = VPlotContainer(use_backbuffer = True)
    container.add(horizontal_pos_plot)
    container.add(value_plot)
    #container.add(intensity_plot)
    container_h = HPlotContainer(use_backbuffer = True)
    container_h.add(container)
    container_h.add(intensity_plot)
    return container_h 
コード例 #2
0
    def _plot_container_default(self):
        container = OverlayPlotContainer( padding = 60, fill_padding = False,
                                  bgcolor = "white", use_backbuffer=True)
        # Plot some distribution functions
        plots = {}
        broadcaster = BroadcasterTool()
    
    #""" Plot 
        
#        view = DataView(border_visible = True)
#
        index = ArrayDataSource(self.x_array)
        value = ArrayDataSource(self.pdf_array, sort_order="none")

        index_range = DataRange1D()
        index_range.add(index)
        index_mapper = LinearMapper(range=index_range)
    
        value_range = DataRange1D()
        value_range.add(value)
        value_mapper = LinearMapper(range=value_range)

        pdf_plot = FilledLinePlot(index = index, value = value,
                                    index_mapper = index_mapper,
                                    value_mapper = value_mapper,
                                    edge_color = tuple(COLOR_PALETTE[0]),
                                    face_color = "paleturquoise",
                                    bgcolor = "white",
                                    border_visible = True)

        add_default_grids(pdf_plot)
        add_default_axes(pdf_plot)

        #***************************Label*************************************
        pdf_label = DataLabel(component=pdf_plot, data_point=(2.4,0.15), 
                          label_position=(15,15), padding=5,
                          label_format = 'PDF',
                          bgcolor = "transparent",
                          marker_color = "transparent",
                          marker_line_color = "transparent",
                          border_visible=False)
        pdf_plot.overlays.append(pdf_label)
        
        
#        tool = DataLabelTool(pdf_label, drag_button="right", auto_arrow_root=True)
#        pdf_label.tools.append(tool)


        container.add(pdf_plot)
        pan = PanTool(pdf_plot)
        zoom = SimpleZoom(pdf_plot, tool_mode="box", always_on=False)
        broadcaster.tools.append(pan)
        broadcaster.tools.append(zoom)
        
        
#*********************************CDF****************************

        plot = create_line_plot((self.x_array,self.pdf_array), 
                                color=tuple(COLOR_PALETTE[0]), width=2.0)
        
        plot.bgcolor = "white"
        plot.border_visible = True                

        add_default_grids(plot)
        add_default_axes(plot)


        container.add(plot)


#       # Create a pan tool and give it a reference to the plot it should
#       # manipulate, but don't attach it to the plot.  Instead, attach it to
#       # the broadcaster.
        pan = PanTool(plot)
        zoom = SimpleZoom(plot, tool_mode="box", always_on=False)
        broadcaster.tools.append(pan)
        broadcaster.tools.append(zoom)
        

    #""" PDF Plot
        # Add an axis on the right-hand side that corresponds to the second plot.
        # Note that it uses plot.value_mapper instead of plot0.value_mapper.
        pdf_plot = create_line_plot((self.x_array,self.cdf_array), 
                                color=tuple(COLOR_PALETTE[1]), width=2.0)
        pdf_plot.bgcolor = "white"
        pdf_plot.border_visible = True
     

        # Label
        cdf_text = TextBoxOverlay(text = 'CDF', alternate_position = (200,390) )
        pdf_plot.overlays.append(cdf_text)

        tool = DataLabelTool(cdf_text, drag_button="right", auto_arrow_root=True)
        cdf_text.tools.append(tool)
        
        container.add(pdf_plot)

#        vertical_axis = LabelAxis(pdf_plot, orientation='top',
#                                  title='Categories')
#        pdf_plot.underlays.append(vertical_axis)

        pdf_pan = PanTool(pdf_plot)
        pdf_zoom = SimpleZoom(pdf_plot, tool_mode="box", always_on=False)
        broadcaster.tools.append(pdf_pan)
        broadcaster.tools.append(pdf_zoom)


        axis = PlotAxis(pdf_plot, orientation="right")
        pdf_plot.underlays.append(axis)



#"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

        # Add the broadcast tool to the container, instead of to an
        # individual plot
        container.tools.append(broadcaster)


        container.underlays.append(PlotLabel("CDF",
                                  component=container,
                                  font = "swiss 16",
                                  overlay_position="right"))


        legend = Legend(component=container, padding=10, align="ul")
        legend.tools.append(LegendTool(legend, drag_button="right"))
        container.overlays.append(legend)

        # Set the list of plots on the legend
        plots["pdf"] = plot
        plots["cdf"] = pdf_plot
        legend.plots = plots


#*******************************************************************************


        x = ArrayDataSource( array( [ 0.0, 0.0 ], dtype = float ) ) 
        y = ArrayDataSource( array( [ 0.0, self.mean ], dtype = float ) )
        
        
        mean_plot = create_line_plot((x,y),
                                  color=tuple(COLOR_PALETTE[2]), width=2.0)


#        vertical_plot = LinePlot(index = ArrayDataSource( array( [ 0.0, 1.0 ], dtype = float ) ),
#                        value = ArrayDataSource( array( [ 0.0, 1.0 ], dtype = float ) ),
#                        color = "green"),
#                        index_mapper = LinearMapper(range=index_mapper),
#                        value_mapper = LinearMapper(range=value_mapper))
 


        container.add(mean_plot)


       # Create a pan tool and give it a reference to the plot it should
       # manipulate, but don't attach it to the plot.  Instead, attach it to
       # the broadcaster.
        mean_pan = PanTool(mean_plot)
        mean_zoom = SimpleZoom(mean_plot, tool_mode="box", always_on=False)
        broadcaster.tools.append(mean_pan)
        broadcaster.tools.append(mean_zoom)



#**************************************************************************

        x = ArrayDataSource( array( [ 0.0, 0.0 ], dtype = float ) ) 
        y = ArrayDataSource( array( [ 0.0, 2.0 ], dtype = float ) )
        
        print "self.standard_deviation", self.standard_deviation
        
        st_plot = create_line_plot((x,y),
                                  color=tuple(COLOR_PALETTE[4]), width=2.0)

        container.add(st_plot)


       # Create a pan tool and give it a reference to the plot it should
       # manipulate, but don't attach it to the plot.  Instead, attach it to
       # the broadcaster.
        st_pan = PanTool(st_plot)
        st_zoom = SimpleZoom(st_plot, tool_mode="box", always_on=False)
        broadcaster.tools.append(st_pan)
        broadcaster.tools.append(st_zoom)



#*****************************************************************************

        # Add the title at the top
        container.overlays.append(PlotLabel("Distribution plots",
                                  component=container,
                                  font = "swiss 16",
                                  overlay_position="top"))

        # Add the traits inspector tool to the container
        container.tools.append(TraitsTool(container))
        return container