class_docstr: Radar chart created from a pandas Dataframe. Each column of the df will be
  represented as a loop in the radar chart. Each row of the df will be
  represented as a spoke of the radar chart
  
  Attributes
  ----------
  data: DataFrame
      data for the radar
  band_type: {"circle", "polygon"} (default: "circle")
      type of bands to display in the radar
  num_bands: Int (default: 5)
      number of bands on the radar. As of now, this attribute is not
      dynamic and it has to set in the constructor
  data_range: List (default: [0, 1])
      range of data
  fill: Bool(default: True)
      flag which lets us fill the radar loops or not
code: def __init__(self, **kwargs):
      super(Radar, self).__init__(**kwargs)
      self.scales = {"x": LinearScale(), "y": LinearScale()}
      # set some defaults for the figure
      self.layout = Layout(min_width="600px", min_height="600px")
      self.max_aspect_ratio = 1
      self.preserve_aspect = True
  
      # marks for the radar figure
  
      # spokes (straight lines going away from the center)
      self.spokes = Lines(
          scales=self.scales, colors=["#ccc"], stroke_width=0.5
      )
  
      # bands
      self.bands = Lines(
          colors=["#ccc"], scales=self.scales, stroke_width=0.5
      )
  
      # loops of the radar
      self.loops = Lines(
          scales=self.scales,
          display_legend=True,
          colors=self.colors,
          stroke_width=2,
          fill="inside" if self.fill else "none",
          marker="circle",
          marker_size=50,
      )
  
      self.band_labels = Label(
          scales=self.scales,
          default_size=12,
          font_weight="normal",
          apply_clip=False,
          colors=["#ccc"],
          align="middle",
      )
  
      self.spoke_labels = Label(
          scales=self.scales,
          default_size=14,
          font_weight="bold",
          apply_clip=False,
          colors=["#ccc"],
          align="middle",
      )
  
      self.marks = [
          self.spokes,
          self.bands,
          self.loops,
          self.band_labels,
          self.spoke_labels,
      ]
  
      # handlers for data updates
      self.observe(self.update_data, "data")
      self.observe(self.update_bands, ["band_type", "num_bands"])
      self.observe(self.update_fill, "fill")
  
      self.loops.on_legend_click(self.on_legend_click)
      self.loops.on_background_click(self.reset)
  
      self.update_bands(None)
      self.update_data(None)
  
file_path: bqplot/bqplot/plotting_widgets.py
imports: from ipywidgets import Layout
  from traitlets import List, Enum, Int, Bool
  from traittypes import DataFrame
  from bqplot import Figure, LinearScale, Lines, Label
  from bqplot.marks import CATEGORY10
  import numpy
label_desc: Use image node_id 1 to create a new Radar object from inherited base classes: Figure with example: obj = Radar()