Обновление: Я полностью описал то, как я нашел это в своем блоге по адресу http://blog.rtwilson.com/producing-polar-contour-plots-with-matplotlib/ - вы можете сначала проверить его.
Я пытаюсь построить полярный контур в matplotlib.Я нашел различные ресурсы в Интернете, (а) я не могу заставить свой код работать, и (б) многие ресурсы выглядят довольно старыми, и мне интересно, есть ли лучший способ сейчас.Например, http://www.mail-archive.com/matplotlib-users@lists.sourceforge.net/msg01953.html предлагает что-то сделать, чтобы улучшить положение вещей в ближайшее время, и это было в 2006 году!
Я бы хотел иметь возможность строить правильные полярные контурные графики - как pcolor позволяет вам делать для своего типа графика (см. Закомментированный раздел ниже), но я не могу найти какой-либо способ сделать это, поэтомуСначала я конвертирую в декартовы координаты.
В любом случае, у меня есть следующий код:
from pylab import *
import numpy as np
azimuths = np.arange(0, 360, 10)
zeniths = np.arange(0, 70, 10)
values = []
for azimuth in azimuths:
for zenith in zeniths:
print "%i %i" % (azimuth, zenith)
# Run some sort of model and get some output
# We'll just use rand for this example
values.append(rand())
theta = np.radians(azimuths)
values = np.array(values)
values = values.reshape(len(zeniths), len(azimuths))
# This (from http://old.nabble.com/2D-polar-surface-plot-td28896848.html)
# works fine
##############
# Create a polar axes
# ax = subplot(111, projection='polar')
# pcolor plot onto it
# c = ax.pcolor(theta, zeniths, values)
# show()
r, t = np.meshgrid(zeniths, azimuths)
x = r*np.cos(t)
y = r*np.sin(t)
contour(x, y, values)
Когда я запускаю это, я получаю ошибку TypeError: Inputs x and y must be 1D or 2D.
.Я не уверен, почему я получаю это, так как x и y являются 2D.Я что-то не так делаю?
Кроме того, довольно неудобно помещать мои значения, возвращенные из моей модели, в список, а затем изменять его.Есть ли лучший способ сделать это?