Say I have a standard matplotlib polar plot:
import matplotlib.pyplot as plt
import numpy as np
r = np.arange(0, 2, 0.01)
theta = 2 * np.pi * r
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax. Plot(theta, r)
ax.set_rmax(2)
ax.set_rticks([0.5, 1, 1.5, 2]) # Less radial ticks
ax.set_rlabel_position(-22.5) # Move radial labels away from plotted line
ax. Grid(True)
ax.set_title("A line plot on a polar axis", va='bottom')
plt.show()
Which yields (source):
In my case, the results are not trustful between certain angles (e.g. between 0º and 45º in the above figure), so I would like to change the plot background color, but only between those angles; i.e. apply ax.set_facecolor
only between certain angles. Is it possible? I could not find online an example for that.
You can use axvspan(...)
to color between two angles (in radians).
import matplotlib.pyplot as plt
import numpy as np
r = np.arange(0, 2, 0.01)
theta = 2 * np.pi * r
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'})
ax.plot(theta, r)
ax.set_rmax(2)
ax.set_rticks([0.5, 1, 1.5, 2]) # Less radial ticks
ax.set_rlabel_position(-22.5) # Move radial labels away from plotted line
ax.grid(True)
startangle = 0
endangle = 45
ax.axvspan(np.deg2rad(startangle), np.deg2rad(endangle), facecolor='red', alpha=0.3)
plt.show()