matplotlib: полярные участки с надрезом
Есть ли способ, которым я могу украсить свои полярные / радиальные графики с "надрезами" в местах r=0 или r = external_edge? Ниже приведен пример. Под "надрезами" я подразумеваю красные и синие линии в начале координат и на краю графика.
Код ниже может быть использован для создания полярного графика.
import numpy as np
import matplotlib.pyplot as plt
data = [-121,87,118,87,109,-139,-112,115,153,-109,-106,-92,75,-98,103,-89,
152,114,77,-109,77,107,-77,106,-158,-71,-166,97,144,-166,138,39,130,
-71,-76,-82,128,74,-47,94,-119,130,76,-86,-85,108,-78,-96,-113,82,
127,-168,72,83,-61,-99,-83,-130,-69,43]
r = np.arange(0, len(data))
ax = plt.subplot(111,polar=True)
ax.scatter(data,r)
plt.show()
1 ответ
Решение
Вы можете использовать аннотирование:
plt.annotate(' ',xy=(0, 0), # theta, radius
xytext = (-np.pi/10,len(data)/6.),
textcoords='data',
arrowprops=dict(facecolor='red', shrink=0.05))
plt.annotate(' ',xy=(np.pi/4.2, 1.355*max(r)), # theta, radius
xytext = (np.pi/4.2, 1.2*max(r)),
textcoords='data',
arrowprops=dict(facecolor='blue', shrink=0.05))
Или вы можете использовать сюжет:
rmax = ax.get_rmax()
theta_startstop = [2*[-np.pi/10],2*[np.pi/4.2]]
r_startstop = [[0,0.1*rmax],[0.9*rmax,rmax]]
notchcolor = ['red', 'blue']
for i in range(len(r_startstop)):
ax.plot(np.array(theta_startstop[i]), np.array(r_startstop[i]),
lw=3, c=notchcolor[i])
ax.set_rmax(rmax)
Результатом будет: