График плотности Matplotlib в полярных координатах?

У меня есть массив, сохраненный в виде текстового файла, в котором есть записи, соответствующие значению распределения в полярных координатах. Так это выглядит так:

  f(r1,theta1) f(r1, theta2) ..... f(r1, theta_max)
  f(r2,theta1) f(r2, theta2) .....        .
        .                                 .
        .                                 .
        .                                 .
  f(r_max,theta1) .................f(r_max, theta_max)

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


person naomig    schedule 25.06.2015    source источник
comment
Я не думаю, что вам на самом деле нужен график плотности — у вас есть одна запись f (r, t) для каждой координаты полярной сетки, да? Но значение f меняется от точки к точке? Тогда вам просто нужно отобразить этот массив на полярном графике.   -  person cphlewis    schedule 30.06.2015
comment
@cphlewis, да, я это и имел в виду. Я оговорился, потому что (не то чтобы это имело значение) f — функция плотности.   -  person naomig    schedule 30.06.2015
comment
Кроме того, я нашел для этого хороший ресурс — blog.rtwilson. com/производство-полярных-контурных-графиков-с-matplotlib   -  person naomig    schedule 30.06.2015


Ответы (1)


В этом примере a — это вы, тэта1…тэтан, b — это ваш r1…rn, c — это ваш f(a, b):

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

#fake data:
a = np.linspace(0,2*np.pi,50)
b = np.linspace(0,1,50)
A, B = np.meshgrid(a, b)
c = np.random.random(A.shape)

#actual plotting
ax = plt.subplot(111, polar=True)
ax.set_yticklabels([])
ctf = ax.contourf(a, b, c, cmap=cm.jet)
plt.colorbar(ctf)

введите здесь описание изображения

По сути, заполненный контурный график в полярной оси. Вы можете указать альтернативную палитру с помощью файла cmap=.... cm.jet изменяется от синего к красному, причем красный цвет является самым большим значением.

person CT Zhu    schedule 30.06.2015