Диаграмма полярного контура Matplotlib: непрерывная через начало тета - PullRequest
0 голосов
/ 16 января 2019

У меня есть данные в формате E (freq, theta), где E - это двумерный массив, а freq и theta - это одномерные массивы.

Следующая часть кода создает прикрепленную фигуру. Однако я хотел бы сделать контурную диаграмму непрерывной в начале координат 0 (т.е. без клина пустого пространства вдоль азимута 0).

Я изучил документацию по matplotlib и очень подробно публиковал вопросы, и, похоже, не могу найти решение этой проблемы. Есть идеи?

Код:

[r, th] = np.meshgrid(freq,theta)

fig = plt.figure()
ax = fig.add_subplot(111, polar=True)
ax.set_theta_zero_location('N')
ax.set_theta_direction(-1)

cntf = ax.contourf(th,r,np.log10(E),cmap='jet',extend='both',
    levels=np.linspace(np.mean(np.log10(E)), np.amax(np.log10(E)), 15))

ax.set_rlim(0, .3)
label_position=ax.get_rlabel_position()
ax.text(np.radians(label_position+25),ax.get_rmax()/1.5,'f (Hz)',
        rotation=label_position,ha='center',va='center')

Произведенный участок: Directional wave spectrum

1 Ответ

0 голосов
/ 16 января 2019

Что-то похожее на это: https://stackoverflow.com/a/22129714/9324652

enter image description here

dtheta = np.diff(theta).mean()
wrp_theta = np.concatenate((theta, theta[-1:] + dtheta))
wrp_E = np.concatenate((E, E[0:1, :]), axis=0)
...