Как построить дуги на радарной диаграмме matplotlib - PullRequest
0 голосов
/ 27 мая 2020

Я хочу построить график радиолокационной диаграммы с дугами, подобными этому рисунку от Matplotlib.

enter image description here

Итак, я попытался построить эту диаграмму с помощью code

spider_df = pd.DataFrame(dict(
    A=np.random.uniform(0, 1, size=7),
    B=np.random.uniform(0, 1, size=7),
    C=np.random.uniform(0, 1, size=7),
    D=np.random.uniform(0, 1, size=7)
)).T

spider_df.columns = ['A1', "A2", "A3", "A4", "A5", "A6", "A7"]
theta = np.arange(0, 2*np.pi, 2*np.pi/(7)) 
labels = spider_df.columns
stats_A = spider_df.iloc[0,:].values
stats_B = spider_df.iloc[1,:].values
stats_C = spider_df.iloc[2,:].values
stats_D = spider_df.iloc[3,:].values


angles=np.linspace(0, 2*np.pi, len(labels), endpoint=False)

fig=plt.figure(figsize=(8,8))
ax = fig.add_subplot(111, polar=True)

ax.set_thetagrids(angles * 180/np.pi, labels)

ax.bar(theta, stats_A, width= 0.7, label = "2015",alpha = 0.25, color = 'green')
ax.bar(theta, stats_B, width = 0.7, label = "2016", alpha = 0.7, fill = None,edgecolor = 'blue', 
      linewidth =2)
ax.bar(theta, stats_C, width = 0.7, label = "2017", alpha = 0.7, fill = None,edgecolor = 'purple',
      linestyle = "-.", linewidth = 2)

ax.bar(theta, stats_D, width = 0.7, label = "2018", alpha = 0.7, fill=None,  edgecolor = 'red',
       linestyle = ":", linewidth = 2)


plt.ylim(0,1)
ax.set_title('Comparing Dataset')
ax.grid(True)
ax.yaxis.grid(False)
# ax.xaxis.grid(False)
plt.legend(loc = (0.75,1))
plt.savefig('polarchart_stack.png')

Мой код возвращает этот выходной график

enter image description here

Я хотел бы знать, как построить график только для ar c без его прямого радиуса и как построить заштрихованную область между осями на графике радиолокационной диаграммы, как на моем контрольном графике.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...