更新:我已经在我的博客http://blog.rtwilson.com/producing-polar-contour-plots-with-matplotlib/上完成了我发现的方式的完整记录- 你可能想要先检查那里.
我正在尝试在matplotlib中绘制极坐标轮廓图.我在互联网上找到了各种资源,(a)我似乎无法使我的代码工作,(b)许多资源显得相当陈旧,我想知道现在是否有更好的方法.例如,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) …Run Code Online (Sandbox Code Playgroud) interp.old(x,y,z,xo = xo,yo = yo,ncp = 0,extrap = extrap,
:x和y的比例太不同了
在代码行之后:
s <- interp(x,y,z)
Run Code Online (Sandbox Code Playgroud)
我的数据被构造为期望在深色连续背景中获得彩色的热图,如线条,并且可以GNUplot使用set pm3d map和来工作set hidden3d。数据对应y于给定时间(x)中分子产生()的模型,其出现频率用表示z。看起来像这样:
1.000000000000e+00 1e-8 0
1.000000000000e+00 5e-8 0
1.000000000000e+00 1e-7 5
1.000000000000e+00 5e-7 0
1.000000000000e+00 1e-6 0
1.000000000000e+00 5e-6 0
1.000000000000e+00 1e-5 0
1.000000000000e+00 5e-5 0
1.000000000000e+00 1e-4 0
1.000000000000e+00 5e-4 0
1.000000000000e+00 1e-3 0
1.000000000000e+00 5e-3 0
1.000000000000e+00 1e-2 0
1.000000000000e+00 5e-2 0
1.000000000000e+00 1e-1 0 …Run Code Online (Sandbox Code Playgroud)