title: Python polar bar chart - Remove degrees & color one ring
body: <p>I have been trying to create a polar bar chart in python for quite some time. After some research I managed to get the results that I wanted. Well, almost. There're still a couple thing that I don't know how to do.</p>
  <p>I include my code:</p>
  <pre><code>import pandas as pd
  import matplotlib.pyplot as plt
  import numpy as np
  from matplotlib.ticker import FixedLocator
  from operator import add
  
  #DATA MANIPULATION
  dataset = pd.read_csv('Controls.csv', delimiter=&quot;;&quot;)
  dataset.astype({'Rating':'float'})
  #print(dataset.dtypes)
  
  categories = dataset['Category'].drop_duplicates()
  controls = dataset['Control'].drop_duplicates()
  
  categ_avg = []
  control_average = []
  
  #Average for controls
  for category in categories:
         avg = 0
         for index, item in dataset.iterrows():
                if item['Category'] == category:
                       avg += item['Rating']
         categ_avg.append(avg)
         avg = 0
  
  for control in controls:
      avg = 0
      for index, item in dataset.iterrows():
          if item['Control'] == control:
              avg += item['Rating']
      control_average.append(avg)
      avg = 0
  
  average = [total / 5 for total in categ_avg]
  
  avgdf = pd.DataFrame({
         'Category' : categories,
         #'Controls' : controls,
         'Average' : average
  })
  
  #PLOTTING
  #Compute pie slices which is the number of unique controls
  N = len(controls)
  
  #theta = np.linspace(0, 2 * np.pi, N, endpoint=False)
  theta = [0]
  for cat in categories:
      if cat == 'CAT-A':
              theta.append( theta[-1] + (2 * np.pi/N * 2) )
      else:
              theta.append( theta[-1] + (2*np.pi / N) )
  print(theta)
  
  #Compute the filling axis
  mid_theta = []
  for cat in categories:
      if cat == 'CAT-A':
              mid_theta.append( 2 * np.pi/N )
      else:
              mid_theta.append( 2 * np.pi / N / 2 )
  mid_theta = list(map(add,theta, mid_theta))
  print(mid_theta)
  radii = avgdf['Average']
  #width = theta[1] - theta[0]
  width = []
  for i in range(0, len(avgdf['Average'])):
         width.append(theta[i+1] - theta[i])
  
  fig = plt.figure()
  fig.patch.set_facecolor('white')
  fig.patch.set_alpha(0.5)
  
  #Draw X labels
  ax = fig.add_subplot(111, projection='polar')
  ax.set_xticks(theta)
  
  # Draw ylabels
  ax.set_rlabel_position(0)
  ax.set_yticks([1, 2, 3, 4, 5])
  ax.set_yticklabels([&quot;1&quot;, &quot;2&quot;, &quot;3&quot;, &quot;4&quot;, &quot;5&quot;], color=&quot;black&quot;, size=8)
  ax.set_ylim(0, 5)
  
  #colors = plt.cm.hsv(theta/2/np.pi)
  
  bars = ax.bar(mid_theta, radii, width=width, bottom=0.0)
  
  #Labels
  for bar, angle, label in zip(bars, mid_theta, avgdf[&quot;Category&quot;]):
  
      # Labels are rotated. Rotation must be specified in degrees :(
      rotation = np.rad2deg(angle)
  
      # Flip some labels upside down
      alignment = &quot;&quot;
      if angle &gt;= np.pi/2 and angle &lt; 3*np.pi/2:
          alignment = &quot;right&quot;
          rotation = rotation + 180
      else: 
          alignment = &quot;left&quot;
  
      # Finally add the labels
      ax.text(
          x=angle, 
          y=5.5,
          s=label, 
          ha=alignment, 
          va='center') 
  
  
  #Use custom colors and opacity
  for r, bar in zip(avgdf['Average'], bars):
      bar.set_facecolor(plt.cm.viridis(r/5.))
      bar.set_alpha(0.5)
  
  plt.show()
  </code></pre>
  <p>When I execute it I obtain the following graph: <a href="https://i.stack.imgur.com/qnGUq.png" rel="nofollow noreferrer">Resulting graph</a></p>
  <p>What I'm trying to achieve is:</p>
  <ul>
  <li>I would like to color the ring number 4 in green.</li>
  <li>I would like to remove the degrees from the outer ring. I only want to see my categories not the 0, 144º...</li>
  </ul>
  <p>I really appreciate the help.</p>
  <p>Thanks you.</p>