Matplotlib极坐标密度图?

4

我有一个保存为txt文件的数组,其中的条目对应于极坐标分布的值。所以它看起来像这样:

  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实现这个功能的方法?最好提供具体代码,因为我对此完全不熟悉。


我认为您实际上不需要密度图--对于每个极坐标网格坐标,您都有一个f(r,t)条目,是吗?但是f的值会从点到点变化吗?然后您只需要将该数组在极坐标图上进行热力图显示即可。 - cphlewis
@cphlewis,对的,那就是我想说的。我说错了,因为(虽然这并不重要)f是一个密度函数。 - naomig
另外,我找到了一个很好的资源 -- http://blog.rtwilson.com/producing-polar-contour-plots-with-matplotlib/ - naomig
1个回答

8
在这个例子中,a代表你的theta1...thetan,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 从蓝色到红色渐变,其中红色表示最大值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接