python中的极地热图

时间:2016-04-09 06:00:53

标签: python matplotlib heatmap polar-coordinates

我想将抛物面f(r)= r ** 2绘制为2D极地热图。我期望的输出是enter image description here

我写的代码是

<div ng-repeat="json in myJson">
        <li>{{json.name}}</li>

    </div><h1>
    total:
    </h1>

$scope.myJson = [
  {
    "id": "1",
    "name": "banana",
    "price": 12,
    "qty": 3,
  },
  {
    "id": "2",
    "name": "watermelon",
    "price": 12.9,
    "qty": 4,
  }
]

但是该程序返回以下图像。 enter image description here

有人可以帮忙吗?提前谢谢。

1 个答案:

答案 0 :(得分:5)

我认为你无意中混淆了radiuszenithazimuth:)

这绘制了我认为你想要的东西:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

fig = plt.figure()
ax = Axes3D(fig)

rad = np.linspace(0, 5, 100)
azm = np.linspace(0, 2 * np.pi, 100)
r, th = np.meshgrid(rad, azm)
z = (r ** 2.0) / 4.0

plt.subplot(projection="polar")

plt.pcolormesh(th, r, z)
#plt.pcolormesh(th, z, r)

plt.plot(azm, r, color='k', ls='none') 
plt.grid()

plt.show()

enter image description here

如果您想要光线网格线,可以按照以下方式在每个Theta中添加它们:

plt.thetagrids([theta * 15 for theta in range(360//15)])

enter image description here

和更像这样的径向网格:

plt.rgrids([.3 * _ for _ in range(1, 17)])

enter image description here

PS:numpy和pyplot会让你的命名空间保持整洁......